我认为问题标题足够清楚:是否可以在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());
g ++给了我大约30行错误(粘贴时间太长),其中一些错误指的是RandomAccessIterators(以及名为_merge_sort_loop的东西)。这有点奇怪,因为我已经看到链接列表的一些合并排序实现,它们几乎是“顺序的”。
答案 0 :(得分:13)
std :: list :: sort已经稳定了。从标准第23.2.24节:“注释:稳定:保留等效元素的相对顺序。”