C++中vector的排序问题
2015-07-06 19:20
405 查看
在用vector排序的时候,发现sort()函数有一个问题,sort排序只会返回排序后的结果,不会返回每个排序后的结果在原来的编号。
上述代码可以解决这个问题,上段代码的调用方式如下:
原理其实很简单,就是把数据与编号组成一个键值对,然后把这些键值对定义成一个vector<>变量,再用sort函数对vector排序就OK了。
//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;
原理其实很简单,就是把数据与编号组成一个键值对,然后把这些键值对定义成一个vector<>变量,再用sort函数对vector排序就OK了。
相关文章推荐
- C++实现字符串之模式匹配(一)
- c语言基本数据类型
- chapter16test5
- [LeetCode] Summary Ranges
- OJ嘻唰唰之改错题(4)-C++继承
- LeetCode-Power of Two-解题报告
- chapter16test4
- LeetCode-Compare Version Numbers解题报告
- ubuntu下安装eclipse IDE for C/C++ developers
- 一个简单的c++加解密程序
- VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- C++ 虚函数表解析
- C++ 虚函数表解析
- The meaning of "argc" and "argv" in programming
- C++ primer读书笔记 2
- C++异常处理 - 栈解旋,异常接口声明,异常类型和异常变量的生命周期
- C++异常处理 - 栈解旋,异常接口声明,异常类型和异常变量的生命周期
- C++实现队列之链式存储结构
- C++重要知识点拾忆
- 【C语言】输入一组整数,求出这组数字子序列和中最大值