C++中vector的排序问题

原创 2015年07月06日 19:20:43
在用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++ STL的vector容器做一个排序操作,之前一直把vector当做一个容量可自动变化的数组,是的,数组,所以打算按照对数组进行排序的方法:用快速排序或是冒泡排序等算法自己写一个排...
  • hnu_zxc
  • hnu_zxc
  • 2011年09月03日 21:51
  • 94984

C++中,结构体vector使用sort排序

一、遇到问题: 今天写代码的是遇到想对vector进行排序的问题,隐约记得std::sort函数是可以对vector进行排序的,但是这次需要排序的vector中压的是自己定义的结构体(元素大于等于2)...
  • zhouxun623
  • zhouxun623
  • 2015年11月17日 14:53
  • 22648

C++ vector的排序------对于结构体vector, 需要自己实现比较

在很多面试中, 都会问到: 结构体作为map的key, 需要注意什么? 这个问题, 我在http://blog.csdn.net/stpeace/article/details/46553525中已...
  • stpeace
  • stpeace
  • 2016年03月20日 23:42
  • 6320

C++标准库 std::sort vector排序

前天要做一个对C++ STL的vector容器做一个排序操作,之前一直把vector当做一个容量可自动变化的数组,是的,数组,所以打算按照对数组进行排序的方法:用快速排序或是冒泡排序等算法自己写一个排...
  • CNHK1225
  • CNHK1225
  • 2015年07月31日 15:27
  • 5643

Vector的自动排序Sort

建立了一个结构体,然后用容器进行存放,想对其进行排序。方法如下: 1.包含...
  • zhangla1220
  • zhangla1220
  • 2014年07月22日 17:13
  • 2223

实战c++中的vector系列--使用sort算法对vector进行排序(对vector<string>排序、使用稳定的排序std::stable_sort())

写了挺多关于vector的操作了,正好工作中遇到对vector进行排序的问题,这里就讨论一下。直接使用sort算法,那就先了解一下:template void sort (RandomAcces...
  • wangshubo1989
  • wangshubo1989
  • 2015年12月22日 21:13
  • 6209

C++ vector排序

在使用vector对于可变长度数据存储时,不可避免的会遇到对数据的排序 对于系统类型,比如int,可以使用系统提供的升序降序函数进行操作 vector< int >升降序int a[10]={5...
  • upc_xbt
  • upc_xbt
  • 2016年11月23日 15:31
  • 878

C++小知识之Vector排序

// sort algorithm example #include      // std::cout #include     // std::sort #inclu...
  • xdrt81y
  • xdrt81y
  • 2014年01月07日 09:57
  • 7566

对vector等STL标准容器进行排序操作

西方有句谚语:不要重复发明轮子! STL几乎封装了所有的数据结构中的算法,从链表到队列,从向量到堆栈,对hash到二叉树,从搜索到排序,从增加到删除......可以说,如果你理解了STL,你会发...
  • ihadl
  • ihadl
  • 2012年03月27日 22:24
  • 59722

C++ vector容器使用 排序

[cpp] view plaincopyprint? #include   #include  #include  #include    using namespace std...
  • C_Bright
  • C_Bright
  • 2014年06月06日 14:48
  • 1555
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++中vector的排序问题
举报原因:
原因补充:

(最多只允许输入30个字)