【发布时间】:2022-12-31 14:31:16
【问题描述】:
我目前正在学习 C++,正在阅读 C++ Primer 第 5 版,我必须:
9.3.6.容器操作可能会使迭代器无效我的问题是关于双端队列,我问 chatgpt
向我解释这个问题,他给了我第二个选择,但书上另有说法,
我想也许这本书有点过时了,想听听有经验的人的意见。
什么是正确的 1 / 2 ?
-
如果 删除的元素在除正面或背面以外的任何地方。如果我们删除元素 双端队列的后面,尾端迭代器无效但其他迭代器, 引用和指针不受影响;如果我们删除它们也不受影响 从前面。
-
如果在双端队列中的任何位置插入或删除元素,则迭代器、指针和对双端队列中元素的引用可能会变得无效,而不仅仅是在前面或后面插入元素或从中间删除元素时。这是因为双端队列将它们的元素存储在链接在一起的多个内存块中,插入或删除元素可能需要双端队列分配或释放新的内存块。如果发生这种情况,现有的迭代器、指针和对双端队列中元素的引用可能会变得无效,因为它们将不再指向内存中的正确位置。
从一本书中学习,试图理解什么是正确的,如何使用双端队列以及在双端队列类型的容器中添加或删除元素时会发生什么。
【问题讨论】:
-
不应依赖 ChatGPT 做任何事情。它总是会给出一个自信的答案,而答案往往是错误的。
标签: c++ containers