【发布时间】:2017-05-31 22:44:43
【问题描述】:
我在我的一个 C++ 程序中使用了 deque,并且正在 cppreference.com 上阅读 insert 的文档。除了这一点之外,大部分都是有意义的:
所有迭代器,包括过去的迭代器,都无效。 引用也无效,除非
pos == begin()或pos == end(), 在这种情况下,它们不会失效。
这是什么意思?这是说对双端队列本身的引用无效,还是对其元素的引用,或对迭代器的引用?还是完全不同的东西?
这是相关文档的链接:http://en.cppreference.com/w/cpp/container/deque/insert
【问题讨论】:
-
对元素的引用。
-
@BaummitAugen 这怎么可能? C++ 引用一旦分配就不能更改。
-
好的,但如果它只是内存块,那么为什么“插入”会使迭代器无效到开始/结束? @BaummitAugen
-
它通过将元素移向更接近的开头或结尾来在插入点创建一个空间。如果需要一个新的开始或结束块,则创建一个。这将使开始/结束迭代器无效。