4

我认为问题标题很清楚:stable_sort() 是否可以在 C++ 中使用 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 的东西)。这有点奇怪,因为我已经看到了一些链表的合并排序实现,它们几乎是“顺序的”。

4

1 回答 1

13

std::list::sort 已经稳定了。来自标准,第 23.2.24 节:“注意:稳定:保留等效元素的相对顺序。”

于 2009-07-08T21:22:16.220 回答