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使用sort排序

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

C++标准库 vector排序

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

C++ vector中使用pair

最近在项目中遇到了在vector中插入pair对的用法,之前也没有这么用过,针对使用过程中自己的一些想法,将这个使用方法给记录下来,攒一点点经验,新手上路。 STL中map通过键-值的形式保证一一对...

c++ vector中插入pair

       我们知道map和multimap的作用,这两种数据类型在存储数据时,会根据pair的first成员进行排序,不同的时前者将不会插入对first成员重复的结构,后者可以。那如果我们只想存储...

关于c++ vector 插入pair

我们知道map和multimap的作用,这两种数据类型在存储数据时,会根据pair #include #include using namespace std; int m...

c++ vector pair 综合应用

pair中元素 由 vector和其他值组成,外层vector由 pair组成,实现查找功能。   #include #include using namespace std; clas...

实战c++中的vector系列--构造、operator=和assign区别

vector也许是实际过程中使用最多的stl容器,看似简单,其实有很多技巧和陷阱。着重看一看vector的构造,暂时按照C++11:default (1) explicit vector (cons...

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

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

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

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

stl vector排序

C++中当 vector 中的数据类型为基本类型时我们调用std::sort函数很容易实现 vector中数据成员的升序和降序排序,然而当vector中的数据类型为自定义结构体类型时,我们该怎样实现升...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++中vector的排序问题
举报原因:
原因补充:

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