【发布时间】:2012-11-20 13:28:27
【问题描述】:
我正在阅读 Scott Meyers 的有效 STL。在第 1 项中,作者提到了如何在各种容器中进行选择,下面是我难以理解的文本 sn-p。
拥有一个随机访问的序列容器会有所帮助吗 没有指向数据的指针和引用的迭代器 只要没有任何内容被擦除并且插入发生就无效 只在容器的末端?这是一个非常特殊的情况,但如果 这是你的情况,双端队列是你梦想的容器。 (有趣的是,deque 的迭代器在插入时可能会失效 仅在容器的末端制作。 deque 是唯一的标准 STL 容器,其迭代器可能无效 使其指针和引用无效。)
我对上述文字的问题
作者在上述上下文中的指针和引用是什么意思,它与迭代器有什么不同?
当只在末尾进行插入并且我们仍然有有效的指针和引用时,如何使双端队列的迭代器失效?
要求用简单的例子回答以上两个问题。
感谢您的时间和帮助。
【问题讨论】:
-
在开头或结尾插入不会改变内容的实际内存位置,因此任何指针或引用都会继续指向正确的对象。但是,如果迭代器存储为例如从一开始的偏移量,则插入将使任何现有的迭代器具有错误的偏移量。然而,这是一个完整的猜测,只是大声思考。