从中间擦除,指针丢失
Deque erase from middle, is pointer lost?
我经常擦除队列中间的元素。deque中元素的内存地址在其他地方使用。从deque中删除中间元素是否会使所有指向deque的指针像vector一样失效?我应该切换到列表吗?(我遍历整个队列)
我试图阅读deque实现,但它是复杂的,我不明白它是否作为一个列表或向量。
我正在使用visualc++ std实现deque.
是。在中间插入会使所有迭代器和对元素的引用(以及指向元素的指针)失效。在任意一端插入会使所有迭代器失效,但不会使引用或指针失效。你不需要通过阅读实现来发现这些东西;你读了文档。(实现可能实际上允许官方不支持的操作。)
从deque中删除中间元素会使所有指向deque的指针失效吗?
对于deque,所有迭代器和对deque的引用都无效,除非被擦除的成员位于deque的末端(前端或后端)。
对于vector容器,插入点之前的所有迭代器和引用都不受影响,除非新容器的大小大于先前的容量。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 2D数组来自文本输入,中间有空格
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- 从 'void *' 转换为 'const std::string *&' 必须具有所有中间指针 const 合格
- C 弦乐操作用指针,中间为空
- 使指针的中间;它有效吗?
- 使用指针数组存储阶乘计算的所有中间结果
- 如何返回指向字符数组中间某些内容的指针
- 在C++中获取Vector的一部分,类似于指向C数组中间的指针
- 从中间擦除,指针丢失
- 删除和替换catarray中间的对象指针
- 如果给定一个指向数组中间的指针,delete[]会做什么?