#include <iostream> #include <algorithm> #include <functional> #include <vector> using std::vector ; using namespace std; struct sample { float features[3]; int index; }; struct MySortFunction { int m_n; MySortFunction(int n):m_n(n) { } bool operator()(sample&s1,sample&s2)const { return s1.features[m_n]<s2.features[m_n]; } }; void main() { vector<sample>a; sample temp; int i; for(i=0;i<5;i++) { temp.features[0]=rand()%10; temp.features[1]=rand()%10; temp.features[2]=rand()%10; temp.index=i; a.push_back(temp); } vector<int>::size_type ix=0; for(;ix<a.size();ix++) cout<<a[ix].features[0]<<" "<<a[ix].features [1]<<" "<<a[ix].features [2]<<endl; cout<<"after sort"<<endl; //分别按特征排序 for(i=0;i<3;i++) { cout<<"sort at"<<i<<endl; std::sort(a.begin(),a.end(),MySortFunction(i) ); for( ix=0;ix<a.size();ix++) cout<<a[ix].features[i]<<" "; } }