排序问题 急!struct stu{int a1int a2int a3.............int a59}vectorstu vv[0] a0 a1 a2....
排序问题 急!
struct stu
{
int a1;
int a2;
int a3;
....
....
.....
int a59;
}
vector<stu> v;
v[0] = a0 a1 a2.....到a59
v[1] = a0 a1 a2.....到a59
.....
用a2作为索引怎么把vector从小到大排序。
[解决办法]
- C/C++ code
#include <iostream>#include <algorithm>#include <vector>using namespace std;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}; vector<int> myvector (myints, myints+8); // 32 71 12 45 26 80 53 33 vector<int>::iterator it; // using default comparison (operator <): sort (myvector.begin(), myvector.begin()+4); //(12 32 45 71)26 80 53 33 // using function as comp sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80) // using object as comp sort (myvector.begin(), myvector.end(), myobject); //(12 26 32 33 45 53 71 80) // print out content: cout << "myvector contains:"; for (it=myvector.begin(); it!=myvector.end(); ++it) cout << " " << *it; cout << endl; return 0;}
[解决办法]
重载个operator<
bool operator<(const Student& s1, const Student& s2)
{
if (s1.a2 < s2.a2)
return true;
else
return s1.a1 < s2.a1;
//根据需要自己改
}
std::sort(sutVector.begin(), stuVector.end());
[解决办法]
我在 VC6.0上没错啊
- C/C++ code
#include<iostream>#include<algorithm>#include<vector>using namespace std;struct stu{ int a1,a2,a3,a4;};bool cmp(stu a, stu b){ if(a.a2 == b.a2) return a.a1 < b.a1; else return a.a2 < b.a2;}int main(){ vector<stu> v; stu st1,st2,st3; st1.a1= 3; st1.a2=4;st1.a3=5;st1.a4=6; v.push_back(st1); st2.a1= 2; st2.a2=4;st2.a3=5;st2.a4=6; v.push_back(st2); st3.a1= 1; st3.a2=4;st3.a3=5;st3.a4=6; v.push_back(st3); sort(v.begin(), v.end(), cmp); for(int i = 0; i<3; ++i) { cout<<v[i].a1<<" "; } cout<<endl; return 0;} 