C++vector容器里的2个成员怎么交换位置啊?里面的成员都是学生类对象,想按照成绩从高往低排

如题所述

第1个回答  2012-08-30
楼上的回答可以.
但是有更简单的方法.

STL排序默认使用的是 "<"小于号来排序, 所以我们只需要为student类型重载"<"号就可以了.

bool operator <(const student& _Left, const student& _Right)
{
return _Left.chengji < _Right.chengji;
}

int main()
{
student s1;
student s2;
if(s1 < s2) // 现在就可以直接使用<来比较2个student了.
xxxxx
}

要排序的话.
#include <algorithm> // C++算法库

int main()
{
vector <student> vec;
// 各种其他代码
// 排序
std::sort(vec.begin(), vec.end());
}
第2个回答  2012-08-30
用容器自带的sort函数,它第三个参数可以自己制定规则:
如:
stuct student
{
...

int id;
...

}
// 以学生ID为比较规则

bool less(const student& s1,const student& s2)
{
return s1.id<s2.id;
}
第3个回答  2012-08-30
#include <algorithm>
struct temp{
// 定义小于比较
//bool operator()(const 学生类&,const 学生类& );
};
/*
vector<学生类> vec;
stable_sort(vec.begin(),vec.end(),temp)
*/本回答被网友采纳
相似回答