11

std::list<>::spliceサブシーケンスを参照するイテレータを無効にすることの背後にある理論的根拠は何なのか、新しいコンテナに接合されているのだろうか。std::container::swapこれは、特に標準仕様に照らして、私にはちょっと非論理的に見えます。言語標準によると、std::container::swap イテレータは無効になりません。これは完全に合理的な実用的な仕様です。std::list<>::spliceただし、イテレータ保存動作からも大きなメリットがあると思います。

イテレータの到達可能性などの概念に基づいた純粋に学術的な考慮事項があるかもしれないことは理解しています。しかし同時に特定の操作ですsplicestd::list一般的なSTL設計。

それで、それは何でしたか?std::listそれは、私が認識していないのいくつかの実用的な実装を禁止したり、過度に複雑にしたりしますか?

4

2 に答える 2

8

C++11spliceでは、反復子を無効にしませんが、*thisコンテナー内の適切な要素を参照するようにします。これはすべて 23.3.5.5 で説明されています。

于 2012-07-05T21:29:40.920 に答える
4

コンテナーにカスタマイズされた、等しくない (互換性のない) allocatorsがある場合、ポインターを交換することはできず、要素を実際にコピーする以外に選択肢はありません。

于 2012-08-11T00:42:00.340 に答える