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

C++中的結(jié)構(gòu)體vector排序問(wèn)題

 更新時(shí)間:2022年11月11日 11:11:47   作者:gz7seven  
這篇文章主要介紹了C++中的結(jié)構(gòu)體vector排序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

C++結(jié)構(gòu)體vector排序

使用sort函數(shù)對(duì)一個(gè)vector很常用,前提是通文件中必須包含#include ,但是針對(duì)結(jié)構(gòu)體vector排序則需要進(jìn)行一定的改動(dòng)。

具體事例如下所示

// sort algorithm example
#include <iostream> ? ? // std::cout
#include <algorithm> ? ?// std::sort
#include <vector> ? ? ? // std::vector

bool myfunction (int i,int j) { return (i<j); }

struct myclass {
? bool operator() (int i,int j) { return (i<j);}
} myobject;

int main () {
? int myints[] = {32,71,12,45,26,80,53,33};
? std::vector<int> myvector (myints, myints+8); ? ? ? ? ? ? ? // 32 71 12 45 26 80 53 33

? // using default comparison (operator <):
? std::sort (myvector.begin(), myvector.begin()+4); ? ? ? ? ? //(12 32 45 71)26 80 53 33

? // using function as comp
? std::sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80)

? // using object as comp
? std::sort (myvector.begin(), myvector.end(), myobject); ? ? //(12 26 32 33 45 53 71 80)

? // print out content:
? std::cout << "myvector contains:";
? for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
? ? std::cout << ' ' << *it;
? std::cout << '\n';

? return 0;
}

但是當(dāng)vector中的變量是結(jié)構(gòu)體,并且需要按照結(jié)構(gòu)體的某一個(gè)元素進(jìn)行排序時(shí),則需要進(jìn)行一定的修改:

#include "privateHeader.h"
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using std::string;
using std::vector;
using std::cout;
using std::endl;
using namespace std;

typedef struct
{
? ? float score;
? ? string file_name;
? ? string all_file_name;

}TFileProp;

bool GreaterSort(TFileProp a, TFileProp b)
{
? ? return (a.score > b.score);
}
bool LessSort(TFileProp a, TFileProp b)
{
? ? return (a.score < b.score);
}
vector<TFileProp> VecFileProp;

VecFileProp.push_back(tFileProp); ? ?//對(duì)vector進(jìn)行push操作

std::sort(VecFileProp.begin(), VecFileProp.end(), GreaterSort); ? ?//進(jìn)行降序排序
std::sort(VecFileProp.begin(), VecFileProp.end(), LessSort); ? ?//進(jìn)行升序排序

還有一點(diǎn),利用Iang傳遞參一個(gè)數(shù)據(jù)時(shí),由于命令行接收的參數(shù)是以char** argv存儲(chǔ)的,因此需要先進(jìn)行強(qiáng)制類型轉(zhuǎn)換,經(jīng)過(guò)一個(gè)string作為中間的轉(zhuǎn)換變量,最終轉(zhuǎn)成int型,另外,我之前認(rèn)為由于是char型的原因,應(yīng)該主能傳遞0-255的參數(shù),但是仔細(xì)想一下是不對(duì)的,因?yàn)闊o(wú)論是多大的數(shù),都是以一個(gè)字符串傳遞進(jìn)去的,然后string類型再進(jìn)行強(qiáng)轉(zhuǎn)的時(shí)候就轉(zhuǎn)陳了int型,因此并不存在256的大小限制。

int main(int argc, char** argv)
{
? ? // 統(tǒng)計(jì)時(shí)間
? ? //timeStatistics();

? ? // 所有結(jié)果放到一個(gè)文件夾顯示

? ? int num_save;
? ? if (argc == 2)
? ? {
? ? ? ? std::string thres = argv[1];
? ? ? ? num_save = atof(thres.c_str());
? ? ? ? //std::cout << "(int)argv[1] is " << argv[1];
? ? ? ? //std::cout << "num_save is " << num_save;
? ? }
? ? else
? ? {
? ? ? ? num_save = 100;
? ? }
? ? showAllResult(num_save);


? ? return 1;
}

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

寫(xiě)給自己

可以使用結(jié)構(gòu)體內(nèi)重載小于號(hào),也可以使用編寫(xiě)cmp函數(shù)的形式

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef struct stu{
	int niD;
	string strName;
	bool operator < (stu const& a) const  {
		if(niD < a.niD) return true;
        if(niD == a.niD)
			return strName.compare(a.strName) < 0;
        return false;
    }
}stu;
bool cmp(stu a,stu b){
    if(a.niD > b.niD) return true;
    if(a.niD == b.niD)
        return a.strName.compare(b.strName) < 0;
    return false;
}
int main(){
    vector<stu> v;
    stu a;
    stu b;
    a.niD=1;
    a.strName="sfr";
    b.niD=0;
    b.strName="sfr1";
    v.push_back(a);
    v.push_back(b);
    for(stu s:v)
        cout<<s.niD<<endl;
    //結(jié)構(gòu)體內(nèi)重載小于號(hào)
    sort(v.begin(),v.end());
    for(stu s:v)
        cout<<s.niD<<endl;
    //使用cmp函數(shù)
    sort(v.begin(),v.end(),cmp);
    for(stu s:v)
        cout<<s.niD<<endl;
    return 0;
}

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

相關(guān)文章

  • c++中l(wèi)og4cplus日志庫(kù)使用的基本步驟和示例代碼

    c++中l(wèi)og4cplus日志庫(kù)使用的基本步驟和示例代碼

    這篇文章主要給大家介紹了關(guān)于c++中l(wèi)og4cplus日志庫(kù)使用的相關(guān)資料,log4cplus是一款開(kāi)源的c++日志庫(kù),具有線程安全,靈活,以及多粒度控制的特點(diǎn),log4cplus可以將日志按照優(yōu)先級(jí)進(jìn)行劃分,使其可以面向程序的調(diào)試,運(yùn)行,測(cè)試,后期維護(hù)等軟件全生命周期,需要的朋友可以參考下
    2024-06-06
  • C++?STL?中的數(shù)值算法示例講解

    C++?STL?中的數(shù)值算法示例講解

    本片文章講解了C++STL?中的數(shù)值算法,包含iota、accumulate、adjacent_difference、inner_product、partial_sum這些方法的使用,感興趣的朋友來(lái)看看吧<BR>
    2022-04-04
  • C++類的空指針調(diào)用成員函數(shù)的代碼

    C++類的空指針調(diào)用成員函數(shù)的代碼

    這篇文章主要介紹了C++類的空指針調(diào)用成員函數(shù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • C++獲取當(dāng)前進(jìn)程IAT的方法

    C++獲取當(dāng)前進(jìn)程IAT的方法

    這篇文章主要介紹了C++獲取當(dāng)前進(jìn)程IAT的方法,實(shí)例講述了IAT(導(dǎo)入地址表)的獲取方法,在Windows應(yīng)用程序開(kāi)發(fā)中有著非常實(shí)用的應(yīng)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C++中二叉堆排序詳解

    C++中二叉堆排序詳解

    這篇文章主要介紹了C++中二叉堆排序詳解,主要介紹了二叉堆排序(遞歸和非遞歸實(shí)現(xiàn)上沉、下沉算法),需要的朋友可以參考下
    2023-01-01
  • C++實(shí)現(xiàn)無(wú)重復(fù)字符的最長(zhǎng)子串

    C++實(shí)現(xiàn)無(wú)重復(fù)字符的最長(zhǎng)子串

    本文主要介紹了C++實(shí)現(xiàn)無(wú)重復(fù)字符的最長(zhǎng)子串,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • c語(yǔ)言/c++溢出問(wèn)題淺談

    c語(yǔ)言/c++溢出問(wèn)題淺談

    這篇文章主要給大家介紹了關(guān)于c語(yǔ)言/c++溢出問(wèn)題的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C/C++ Zlib庫(kù)封裝MyZip壓縮類的詳細(xì)過(guò)程

    C/C++ Zlib庫(kù)封裝MyZip壓縮類的詳細(xì)過(guò)程

    在軟件開(kāi)發(fā)中,文件的壓縮和解壓縮是一項(xiàng)常見(jiàn)的任務(wù),而ZIP是一種被廣泛應(yīng)用的壓縮格式,本文將聚焦于一個(gè)簡(jiǎn)化的C++實(shí)現(xiàn),通過(guò)分析代碼,我們將深入了解其設(shè)計(jì)和實(shí)現(xiàn)細(xì)節(jié),感興趣的朋友一起看看吧
    2023-11-11
  • QT實(shí)現(xiàn)多線程兩種方式案例詳解

    QT實(shí)現(xiàn)多線程兩種方式案例詳解

    這篇文章主要介紹了QT實(shí)現(xiàn)多線程兩種方式案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語(yǔ)言指針詳解之野指針

    C語(yǔ)言指針詳解之野指針

    這篇文章主要為大家介紹了C語(yǔ)言野指針,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11

最新評(píng)論

鄂温| 临桂县| 永平县| 菏泽市| 习水县| 阳高县| 万年县| 陆川县| 新兴县| 栖霞市| 安宁市| 乐昌市| 漯河市| 屏南县| 弋阳县| 茌平县| 吴堡县| 墨江| 监利县| 辉县市| 南宁市| 都安| 克山县| 安乡县| 广元市| 乌拉特前旗| 蒙自县| 大同市| 山东| 遂平县| 新郑市| 沽源县| 清水河县| 黎川县| 水城县| 天峨县| 河津市| 额济纳旗| 区。| 甘孜县| 长顺县|