リストに対して sort() メソッドを呼び出した場合、std::list の要素を指すポインタは有効なままですか? これに対する保証(標準)はありますか?Visual Studio 2012 で動作するようです。
質問する
198 次
2 に答える
5
「ワーキング ドラフト C++、2012-11-02」より
23.3.5.5 リスト操作 [list.ops]
void sort();
template <class Compare> void sort(Compare comp);
28 Requires:operator<
(最初のバージョンの場合) または comp (2 番目のバージョンの場合) は厳密な弱い順序付けを定義する必要があります (25.4)。29 効果:または関数オブジェクト
に従ってリストを並べ替えます。イテレータと参照の有効性には影響しません。operator<
Compare
30 備考:安定。
31 複雑さ: 約 N log(N ) 回の比較N == size()
。
于 2013-02-24T14:22:43.973 に答える
2
並べ替えはメモリ内のリストの要素を移動せず、次と前のリンク ポインターを変更するだけです。大丈夫です。
于 2013-02-24T14:19:15.873 に答える