4

質問のタイトルは十分に明確だと思います。C++でstd::listをstable_sort()することは可能ですか?または、それを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 に答える