vector之排序
vector中如果元素是struct类型或者class类型,若要对其中某个类型的元素进行排序,具体代码的编写如下所示:
#include <iostream>
#include <vector>
using namespace std;
struct Record
{
string name;
char add[24];
};
struct Cmp_by_name //为排序编写的结构体
{
bool operator()(const Record &a, const Record &b)
{
return a.name < b.name;
}
};
int main(void)
{
vector<Record > vr;
vector<Record > ::iterator i;
Record rd;
rd.name = "geyuting";
strcpy(rd.add, "suzhou");
vr.push_back(rd);
rd.name = "chenhongliang";
strcpy(rd.add, "huaining");
vr.push_back(rd);
i=vr.begin();
sort(vr.begin(), vr.end(), Cmp_by_name()); //排序函数,调用Cmp_by_name
while(i != vr.end())
{
cout<<(*i).name<<endl;
i++;
}
return 1;
}
上例中是对name进行排序,如果要对add进行排序,也如上类似