假设我有一个 std::vector<Node*> nodes;
和一个 std::vector<Unit*> units;
.每个节点指向一个单元,每个单元又指向该节点,因此它们是相连的。但是当我使用 erase 从任一数组的中间删除一个元素时会发生什么?如果它调整数组的大小,是否意味着它删除所有元素,将它们存储在某个缓冲区中并重建调整大小的数组?那么如果我在节点上使用删除,单元中的指针将变得无效?
最佳答案
从 vector 中删除或插入元素会将所有较高的元素适本地向下或向上移动。但由于您只是四处移动指针,所以这几乎是微不足道的操作。其他指针(您没有删除的指针)没有任何变化,pointees 也没有任何变化。
关于c++ - std::vector::erase 是否使指针无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114407/