C++对vector容器排序,容器元素类型为pair<string,double>类型,sort排序很慢,而且当元素很多时,不出结果

C++对vector容器排序,容器元素类型为pair<string,double>类型sort排序很慢,而且当元素很多时,不出结果怎么半,vector元素数量大概有100... C++对vector容器排序,容器元素类型为pair<string,double>类型sort排序很慢,而且当元素很多时,不出结果怎么半,vector元素数量大概有1000多个,是不是改用list容器 展开
 我来答
志远823
推荐于2016-05-29 · TA获得超过2296个赞
知道小有建树答主
回答量:913
采纳率:66%
帮助的人:1172万
展开全部
不会,都一样,这个是我写的里一个这里供你参考
#include"stdafx.h"
#include<iostream>#include<list>typedefstd::pair<int, int> IntPair;typedefstd::list<IntPair> LstIntPair;inlinestd::ostream& operator << (std::ostream& stream, IntPair& val){stream << "(" << val.first
<< (", ") << val.second
<< ")";returnstream;};voidmain(){LstIntPairlstVal;lstVal.push_back(std::make_pair(1,
1));lstVal.push_back(std::make_pair(1,
3));lstVal.push_back(std::make_pair(1,
3));lstVal.push_back(std::make_pair(1,
2));lstVal.push_back(std::make_pair(1,
1));lstVal.push_back(std::make_pair(1,
6));lstVal.push_back(std::make_pair(1,
5));lstVal.push_back(std::make_pair(2,
1));lstVal.push_back(std::make_pair(2,
3));lstVal.push_back(std::make_pair(2,
3));lstVal.push_back(std::make_pair(2,
2));lstVal.push_back(std::make_pair(2,
1));lstVal.push_back(std::make_pair(2,
6));lstVal.push_back(std::make_pair(2,
5));lstVal.sort();lstVal.unique();LstIntPair::iteratorit;for (it =
lstVal.begin(); it !=
lstVal.end(); ++ it) {std::cout
<< *it << std::endl; }}
输出:
(1, 1)(1, 2)(1, 3)(1, 5)(1, 6)(2, 1)(2, 2)(2, 3)(2, 5)(2, 6)请按任意键继续. . .
追问
是不是因为元素太多了,时间复杂度与元素的关系很大啊,当我只有几十个元素时,马上可以得到结果,但是元素数量达到1000多个,就出不来了,还有我是用泛型算法sort的,不是容器带的sort算法
追答
你的容器内的存储单元如果拷贝代价很高,排序效率会严重下降,你应该存储指针而不是存储实例在容器中。
希望村村民
2012-10-31 · TA获得超过1588个赞
知道小有建树答主
回答量:1187
采纳率:100%
帮助的人:948万
展开全部
list估计更慢。
vector不是多慢啊,难道你的string太大了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式