c++ - std::vector::erase 是否使指针无效?

标签 c++ pointers stdvector erase

假设我有一个 std::vector<Node*> nodes;和一个 std::vector<Unit*> units; .每个节点指向一个单元,每个单元又指向该节点,因此它们是相连的。但是当我使用 erase 从任一数组的中间删除一个元素时会发生什么?如果它调整数组的大小,是否意味着它删除所有元素,将它们存储在某个缓冲区中并重建调整大小的数组?那么如果我在节点上使用删除,单元中的指针将变得无效?

最佳答案

从 vector 中删除或插入元素会将所有较高的元素适本地向下或向上移动。但由于您只是四处移动指针,所以这几乎是微不足道的操作。其他指针(您没有删除的指针)没有任何变化,pointees 也没有任何变化。

关于c++ - std::vector::erase 是否使指针无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114407/

相关文章:

c++ - 如何增强 C++ 数组在大规模访问时的性能

c++ - 你如何删除 Qt 中 QTableView 的行号

使用类的 C++ 单链表

c++ - libsimdpp 比调试 gcc 慢

c - 从内部结构到相同类型的其他结构的指针数组

c - C 的 std::vector 替代品

c++ - 构造函数的转换不适用于运算符重载

c - malloc 到 "array"指针的元素

c++ - 在 BattleShip 游戏 C++ 中返回指向一艘船的指针

c++ - 将指向 vector 中元素的指针设置为空,然后检查指针是否为空(C++)