AnT*_*AnT 11 c++ iterator stl invalidation
我想知道使std::list<>::splice
引用新子容器中的子序列的迭代器无效的原因是什么.这看起来有点不合逻辑,特别是在标准std::container::swap
规格方面.根据语言标准std::container::swap
不会使任何迭代器无效.这是一个非常合理的实用规范.但是,我会说这std::list<>::splice
也会从保留迭代器的行为中获益匪浅.
我理解可能存在基于迭代器可达性等概念的纯粹学术考虑.但同时splice
也是一种std::list
特定的操作,这意味着为它提供定制的规范可能不会对其造成严重的概念损害.一般的STL设计.
那是什么?它会使一些std::list
我认识不到的实际实施变得非法或过于复杂吗?