码迷,mamicode.com
首页 > 编程语言 > 详细

C++中vector的排序问题

时间:2015-07-06 21:48:37      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:c++   简单排序   

在用vector排序的时候,发现sort()函数有一个问题,sort排序只会返回排序后的结果,不会返回每个排序后的结果在原来的编号。
//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++中vector的排序问题

标签:c++   简单排序   

原文地址:http://blog.csdn.net/d14665/article/details/46778185

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!