C++对vector容器排序,容器元素类型为pair<string,double>类型,sort排序很慢,而且当元素很多时,不出结果
C++对vector容器排序,容器元素类型为pair<string,double>类型sort排序很慢,而且当元素很多时,不出结果怎么半,vector元素数量大概有100...
C++对vector容器排序,容器元素类型为pair<string,double>类型sort排序很慢,而且当元素很多时,不出结果怎么半,vector元素数量大概有1000多个,是不是改用list容器
展开
2个回答
展开全部
不会,都一样,这个是我写的里一个这里供你参考
#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)请按任意键继续. . .
#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算法
追答
你的容器内的存储单元如果拷贝代价很高,排序效率会严重下降,你应该存储指针而不是存储实例在容器中。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询