"stable_sort()ing"C++中的STL <list>

Raf*_*ida 4 c++ stl list stable-sort

我认为问题标题足够清楚:是否可以在C++中使用stable_sort()一个std :: list?或者我必须将其转换为std :: vector?

我问,因为我尝试了一个简单的例子,它似乎需要RandomAccessIterators,链表没有.那么,我如何稳定排序std :: list()

编辑:示例代码,给我一个错误:

#include <list>
#include <algorithm>
// ...
list<int> the_list;
stable_sort(the_list.begin(), the_list.end());
Run Code Online (Sandbox Code Playgroud)

g ++给了我大约30行错误(粘贴时间太长),其中一些错误指的是RandomAccessIterators(以及一些名为_merge_sort_loop的东西).这有点奇怪,因为我已经看到链接列表的一些合并排序实现,它们几乎是"顺序的".

Nat*_*hen 13

std :: list :: sort已经稳定了.从标准第23.2.24节:"注释:稳定:保留等效元素的相对顺序."

  • 请记住,算法并不依赖于容器,但可能存在不能一起工作的特定算法 - 容器对. (2认同)