"stable_sort () ing" STL <list>в C ++ - PullRequest
4 голосов
/ 09 июля 2009

Я думаю, что заголовок вопроса достаточно ясен: возможен ли stable_sort () std :: list в C ++? Или мне нужно преобразовать его в 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). Это немного странно, поскольку я видел несколько реализаций сортировки слиянием для связанных списков, и они в значительной степени «последовательные».

1 Ответ

13 голосов
/ 09 июля 2009

std :: list :: sort уже стабильный. Из стандарта, раздел 23.2.24: «Примечания: Стабильный: относительный порядок эквивалентных элементов сохраняется».

...