最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++結(jié)構(gòu)體排序方式(1條件,多條件)

 更新時間:2023年08月14日 10:34:25   作者:wo_jiushi_wo  
這篇文章主要介紹了c++結(jié)構(gòu)體排序方式(1條件,多條件),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

c++結(jié)構(gòu)體排序(1條件,多條件)

最近做題的時候總會遇到排序問題,同樣一個問題用結(jié)構(gòu)體排序和用數(shù)組做差的不僅僅是代碼的長度,還有理解的難易程度,很明顯,用結(jié)構(gòu)體排序更簡單易懂。

但結(jié)構(gòu)體不能直接用algorithm頭文件里的sort函數(shù),需要我們自己補(bǔ)充一個函數(shù)。這里就給大家一一列舉出來。

一個判斷條件

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct cj
{
	int num;
	string name;
	int score;
};
bool cmp(cj a,cj b)
{
	return a.score>b.score;
}
int main()
{
	cj x[5];	//這里的5可以手動輸入n代替
	for(int i=0;i<5;i++)
	 cin>>x[i].name>>x[i].score>>x[i].num;
	sort(x,x+5,cmp);
	cout<<'\n';
	for(int i=0;i<5;i++)
	cout<<x[i].name<<'\t'<<
	x[i].score<<'\t'<<x[i].num<<'\n';
	system("pause");
	return 0;	
}

這里的判斷條件為score,效果如圖

在這里插入圖片描述

多個判斷條件(以兩個為例)

還是以上的代碼,只要把cmp函數(shù)稍做修改就可以了。這里我們的第二給判斷條件為num.

bool cmp(cj a,cj b)
{
	if(a.score!=b.score)
	return a.score>b.score;
	else
	return a.num>b.num;
}

效果如圖

在這里插入圖片描述

有更多條件也可以仿照兩個條件的進(jìn)行修改,要強(qiáng)調(diào)的是,多個條件中,越靠前的所起作用越大。

這里對于初學(xué)者不一定要懂為什么要這樣寫,只需要會用就好了。等到熟練之時可以再找資料更深層次地理解。有什么問題歡迎在評論區(qū)與我交流。

C++結(jié)構(gòu)體自定義排序

聲明:本機(jī)無C++環(huán)境,以下代碼均沒有編譯測試,最近golang寫的比較多,語法可能會有問題,請自行測試代碼

sort排序函數(shù)簡單使用 

#include <bits/stdc++.h>
using namespace std;
int a[100];
bool cmp1(int x,int y) {
	return x > y;
}
bool cmp2(int x,int y) {
	return x < y;
}
int main()
{
	//sort簡單用法
	int n;
	scanf("%d",&n);
	/*
	1到n輸入
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	sort(a+1,a+1+n); //默認(rèn)從小到大排序
	*/
	/*
	0 到 n-1 輸入 
	for(int i=0;i<n;i++)
		scanf("%d",&a[i]);
	sort(a,a+n);
	*/
	//從大到小排序需要寫自定義優(yōu)先級函數(shù)
	sort(a,a+n,cmp1); //采用cmp1函數(shù)排序 從大到小
	sort(a,a+n,cmp2); //采用cmp2函數(shù)排序 從小到大
   return 0;
}

結(jié)構(gòu)體的自定義排序

例如 對于時間排序 年月日

#include <bits/stdc++.h>
using namespace std;
/*
//結(jié)構(gòu)體排序兩種寫法 寫法1 結(jié)構(gòu)體內(nèi)部 重載<運(yùn)算符
struct node {
	int year,month,day;
	node() {year=0,month=0,day=0;}
	node(int y,int m,int d) { year=y,month=m,day=d;}
	bool operator< (const node &p) const { //重載<函數(shù) 內(nèi)部寫小于邏輯
		if (year == p.year && month == p.month) {
			return day < p.day;
		}
		if (year == p.year) {
			return year < p.year;
		}
		return year < p.year;
	}
};
//寫法2 定義結(jié)構(gòu)體后 寫自定義排序函數(shù)
struct node {
	int year,month,day;
	node() {year=0,month=0,day=0;}
	node(int y,int m,int d) { year=y,month=m,day=d;}
};
bool cmp(const node &p,const node &q) { //語句不同 實(shí)現(xiàn)排序效果同方法1 const不可省略
	if (p.year != q.year) return p.year < q.year;
	if (p.month != q.month) return p.month < q.month;
	return p.day < q.day;
}
*/
node t[100];
int main()
{
	t[0] = node{2019,1,20};
	t[1] = node{2019,1,22};
	t[2] = node{2018,2,1};
	t[3] = node{2020,1,1};
	/* 方法1
	sort(t,t+4);
	方法2
	sort(t,t+4,cmp);
	*/
	for (int i=0;i<4;i++) {
	    printf("%d %d %d\n",t[i].year,t[i].month,t[i].day);
	}
   return 0;
}

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++ 配置文件管理神器 yaml-cpp 實(shí)戰(zhàn)指南

    C++ 配置文件管理神器 yaml-cpp 實(shí)戰(zhàn)指南

    本文主要介紹了C++ 配置文件管理神器 yaml-cpp 實(shí)戰(zhàn)指南,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-05-05
  • C++玫瑰花字符畫項(xiàng)目實(shí)戰(zhàn)教程

    C++玫瑰花字符畫項(xiàng)目實(shí)戰(zhàn)教程

    本文介紹了C++字符藝術(shù)——以“玫瑰花代碼”為例,從字符選擇、循環(huán)與條件控制、對稱性實(shí)現(xiàn)、函數(shù)組織和用戶交互等方面,講解如何用C++編寫和優(yōu)化字符圖案,并支持個性化定制和動態(tài)圖案生成
    2025-10-10
  • vscode 配置 C/C++編譯環(huán)境(完整教程)

    vscode 配置 C/C++編譯環(huán)境(完整教程)

    這篇文章主要介紹了vscode 配置 C/C++編譯環(huán)境(完整教程),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • C++實(shí)現(xiàn)簡易通訊錄功能

    C++實(shí)現(xiàn)簡易通訊錄功能

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡易通訊錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • exec()函數(shù)在C++中的應(yīng)用及其用法

    exec()函數(shù)在C++中的應(yīng)用及其用法

    exec()函數(shù)在C++中是一個進(jìn)程控制函數(shù),用于創(chuàng)建新進(jìn)程執(zhí)行其他程序或命令行指令。exec()函數(shù)可以替換當(dāng)前進(jìn)程的代碼和數(shù)據(jù),創(chuàng)建新的進(jìn)程運(yùn)行其他程序。exec()函數(shù)有多個版本,例如execl、execv、execle、execve等,根據(jù)不同的參數(shù)類型和個數(shù)來使用
    2023-05-05
  • VC++基于Dx實(shí)現(xiàn)的截圖程序示例代碼

    VC++基于Dx實(shí)現(xiàn)的截圖程序示例代碼

    這篇文章主要介紹了VC++基于Dx實(shí)現(xiàn)的截圖程序示例代碼,比較實(shí)用的功能,需要的朋友可以參考下
    2014-07-07
  • 五個經(jīng)典鏈表OJ題帶你進(jìn)階C++鏈表篇

    五個經(jīng)典鏈表OJ題帶你進(jìn)階C++鏈表篇

    做題之前呢,小編想提醒下大家,要三思而后行,不要一上來就嘎嘎敲代碼,要先學(xué)會自己畫圖分析,把自己的思路捋清楚,不要到時候?qū)懘a五分鐘,調(diào)試兩小時,記住,編程思路很重要
    2022-03-03
  • C++使用sort對容器排序的實(shí)現(xiàn)

    C++使用sort對容器排序的實(shí)現(xiàn)

    C++ STL 標(biāo)準(zhǔn)庫中的sort()函數(shù)專門用來對容器或普通數(shù)組中指定范圍內(nèi)的元素進(jìn)行排序,本文就詳細(xì)的介紹一下怎么實(shí)現(xiàn),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • C/C++ 中extern關(guān)鍵字詳解

    C/C++ 中extern關(guān)鍵字詳解

    這篇文章主要介紹了C/C++ 中extern關(guān)鍵字詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++析構(gòu)函數(shù)內(nèi)部工作機(jī)制詳解

    C++析構(gòu)函數(shù)內(nèi)部工作機(jī)制詳解

    析構(gòu)函數(shù)(Destructor)也是一種特殊的成員函數(shù),沒有返回值,不需要程序員顯式調(diào)用(程序員也沒法顯式調(diào)用),而是在銷毀對象時自動執(zhí)行。構(gòu)造函數(shù)的名字和類名相同,而析構(gòu)函數(shù)的名字是在類名前面加一個~符號
    2023-02-02

最新評論

灌云县| 乌鲁木齐县| 紫云| 大渡口区| 红桥区| 青海省| 应城市| 铜鼓县| 呼伦贝尔市| 大城县| 巩留县| 开平市| 佛教| 大渡口区| 五寨县| 屏山县| 若羌县| 杭州市| 许昌市| 湘乡市| 马关县| 东源县| 葵青区| 东乡族自治县| 河池市| 开原市| 丹寨县| 寿光市| 龙门县| 嘉定区| 休宁县| 惠安县| 墨竹工卡县| 四平市| 汶川县| 东至县| 宁明县| 连南| 奉贤区| 道真| 聊城市|