我想知道是什麼原因造成std::list<>::splice
無效指向正在拼接到新容器的子序列的迭代器。這對我來說看起來不太合邏輯,特別是根據標準std::container::swap
規範。根據語言標準std::container::swap
不會使任何迭代器失效。這是一個完全合理的實際規格。但是,我會說std::list<>::splice
也會從迭代器保留行爲中獲益很多。std :: list <> :: splice使迭代器無效。什麼道理呢?
我知道,基於迭代器可達性等概念可能存在一些純粹的學術考慮因素。但同時splice
是特定操作,這意味着爲其提供定製的規範可能不會一般來說,對STL設計造成嚴重的概念性損害。
那是什麼?它會違法或過於複雜的std::list
的一些實際實施,我不承認?
[splice()on std :: list和迭代器失效的可能重複](http://stackoverflow.com/questions/143156/splice-on-stdlist-and-iterator-invalidation) – jwismar 2012-07-05 21:31:07