首页 > 试题广场 >

关于迭代器失效,下面说法错误的有?

[单选题]
关于迭代器失效,下面说法错误的有?
  • 当向vector容器插入(push_back)一个元素后,end操作返回的迭代器肯定失效
  • 当向vector容器插入(push_back)一个元素后,capacity返回值与没有插入元素之前相比有改变,此时first和end操作返回的迭代器都会失效
  • 当vector容器erase一个元素后,仅指向删除点的迭代器失效
  • 在deque容器的任何其他位置的插入和删除操作将使指向该容器元素的所有迭代器失效
  • 对于节点式容器(map, list, set)元素的删除,插入操作会导致指向该元素的迭代器失效,其他元素迭代器不受影响
《C++Primer》第五版315页,如果删除deque的首(尾)元素,仅首(尾)迭代器失效,其他不受影响。
发表于 2020-09-27 14:52:44 回复(0)
1.当执行erase方法时,指向删除节点的迭代器全部失效,指向删除节点之后的全部迭代器也失效
2.当进行push_back()方法时,end操作返回的迭代器肯定失效。
3.当插入(push_back)一个元素后,capacity返回值与没有插入元素之前相比有改变,则需要重新加载整个容器,此时first和end操作返回的迭代器都会失效。
4.当插入(push_back)一个元素后,如果空间未重新分配,指向插入位置之前的元素的迭代器仍然有效,但指向插入位置之后元素的迭代器全部失效.
发表于 2022-03-30 08:13:10 回复(0)
答案有问题,应该选CE
发表于 2022-05-16 10:28:13 回复(0)
测试了一下ace应该都是错的,a当vector容量没有改变,push_back后end返回的迭代器依然有效
发表于 2024-03-28 12:21:17 回复(0)
<p>C错的很明显,ersase删除大部分情况是要移动数据的,因为vector是以数组存储的。迭代器会失效。</p>
发表于 2020-10-31 14:14:59 回复(0)
D和E不矛盾???
发表于 2020-08-22 11:03:44 回复(1)