//template<class T> bool cmp(const pair<int,float> &x,const pair<int,float> &y) { return x.second > y.second; } //template<class T> void sortVector(vector<float> &value, vector<int> &lable) { lable.clear(); // 定义一个键值对的数组,第一个Int是键,第二个Int是值 vector<pair<int,float>> theMap; for(vector<float>::size_type i=0; i<value.size(); i++) { theMap.push_back(make_pair(i,value[i])); } sort(theMap.begin(),theMap.end(),cmp); for(vector<pair<int,float>>::size_type i=0; i<theMap.size(); i++) { lable.push_back(theMap[i].first); } }
上述代码可以解决这个问题,上段代码的调用方式如下:
vector<float> a; a.push_back(1); a.push_back(2); a.push_back(4); a.push_back(3); vector<int> lable; sortVector( a, lable); cout<<lable.size()<<endl;
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/d14665/article/details/46778185