您的位置:首页 > 其它

vector中struct等自定义结构排序

2014-07-21 20:24 399 查看
对于vector结构包含自定义的包括struct等的排序问题,常见的几种方法:

#include <vector>
#include <string>
#include <algorithm>
using namespace std;

struct mystruct {
string name;
int score;
bool operator< (const struct mystruct& v) const {
return score < v.score;
}
bool operator== (const struct mystruct& v) const {
return score == v.score;
}
};
class Comparer {
public:
bool operator() (const mystruct&a, const mystruct& b) const {
return a.score < b.score;
}
};
bool compare(const struct mystruct& a, const struct mystruct& b) {
return a.score < b.score;
}
int main(int argc, char **argv)
{
vector<struct mystruct> myvect;
struct mystruct tag;
tag.name="bbb";
tag.score=80;
myvect.push_back(tag);
tag.name="aaa";
tag.score=11;
myvect.push_back(tag);
tag.name="ccc";
tag.score=22;
myvect.push_back(tag);

//sort(myvect.begin(), myvect.end(), compare);
//sort(myvect.begin(), myvect.end());
//sort(myvect.begin(), myvect.end(), greater<struct mystruct>() );
sort(myvect.begin(), myvect.end(), less<struct mystruct>() );
sort(myvect.begin(), myvect.end(), Comparer());

vector<struct mystruct>::iterator iter;
for (iter = myvect.begin(); iter != myvect.end(); ++iter) {
printf("it->first=%s,it->second=%d\n", iter->name.c_str(), iter->score);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: