C++结构体类型的vector如何按照结构体的一个索引值大小排序?

#include 
#include 
#include 
#include 

using namespace std;

struct s{
	int data;
	char b;
};

bool comp(const s &s1, const s &s2 ){
    return s1.data < s2.data;
}
int main()
{
    vector v1;
    s s1, s2, s3, s4, s5;
    s1 = {2, 'b'};
    s2 = {5, 'e'};
    s3 = {1, 'a'};
    s4 = {3, 'c'};
    s5 = {4, 'd'};
    v1.push_back(s1);
    v1.push_back(s2);
    v1.push_back(s3);
    v1.push_back(s4);
    v1.push_back(s5);

    cout << "sort after:" << endl;
    for(auto iter = v1.begin(); iter != v1.end(); iter++){
    	cout << iter->b << endl;
    }

    sort(v1.begin(),v1.end(),comp);

    cout << "sort after:" << endl;
    for(auto iter = v1.begin(); iter != v1.end(); iter++){
    	cout << iter->b << endl;
    }
	return 0;
}

以上代码是vector类型的v1根据data的大小进行由小到大排序,只需要写一个比较函数comp(),如果comp()函数为成员函数,还需要在bool前面加上static,否则会报错。

代码运行结果如下:

C++结构体类型的vector如何按照结构体的一个索引值大小排序?_第1张图片

你可能感兴趣的:(c++,stl)