使用 std::sort 对 std::list 进行排序
sorting std::lists using std::sort
可能的重复项:
使用 stl 排序功能对列表进行排序
我的问题是我们可以使用 std::sort 函数对两个 std::list 进行排序吗?我有 2 个字符串列表
std::list<std::string>list1, list2;
.....//entering values to list
std::sort(list1.begin(), list1.end());
std::sort(list2.begin(), list2.end());
当我对这些列表进行排序时,我收到错误。我尝试使用 std::vector,此时排序有效。
错误就像
C:\Program Files (x86(\Microsoft Visual Studio 10.0\VC\include\xutility(1158( :请参阅"std::运算符 -"的声明1>C:\Program Files (x86(\Microsoft Visual Studio 10.0\VC\include\algorithm(3642(:错误 C2784: '_Base1::d ifference_type std::operator -(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &(' :无法推断出"const std::_Revranit<_RanIt,_Base> &"的模板参数来自 'std::_List_iterator<_Mylist>'1>1> [1> _Mylist=std::_List_valstd::string,std::allocator<std::string>1> ]
我必须知道只有 std::sort 支持列表?
你不能使用std::sort
对std::list
进行排序,因为std::sort
要求迭代器是随机访问的,并且std::list
迭代器只是双向的。
但是,std::list
有一个成员函数sort
可以对其进行排序:
list.sort();
// if you want to use a comparator different from the default one:
// list.sort(comparator);
list::sort
,它可能使用不同的算法。 std::sort
需要随机访问迭代器(支持任意大小的跳转(,而列表迭代器一次只能向前或向后移动一个链接。
见C++11 25.4.1.1:
template<class RandomAccessIterator> void sort(RandomAccessIterator first,
RandomAccessIterator last);
和 23.3.5.5/27(std::list
成员(:
void sort();
template <class Compare> void sort(Compare comp);
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- std::排序在共享指针的向量上
- 是否使用cv::Point2f类型重载std::排序
- std::排序为排序自定义对象时出现的向量引发错误
- C++ 并行 std::排序浮点值
- C STD ::排序Intel编译器错误:访问违规
- 当输入向量称为储备金时,STD ::排序无法正常工作
- C++std::排序实现
- 用std ::排序迭代器
- 无法正确执行STD ::排序
- QSORT和STD ::排序的行为不同
- std::排序将元素与null进行比较
- std::排序和自定义交换函数
- std::排序和比较模板功能不起作用
- std::排序向量的向量
- 简单std::排序不起作用
- JsonCpp如何对Json::值进行std::排序
- STD排序似乎永远在循环
- 在键向量和值向量上同时进行就地std::排序
- 如何使用单独类的属性对向量进行std::排序