向量中的内存重新分配

5

我刚接触C++,希望避免新手常见性能陷阱。

从向量中删除元素是否可能导致内存重新分配?

我正在编写一个函数,将向量添加元素,并在同一帧中可能删除一些元素。


2
并且想要避免新手的性能陷阱。-- 擦除项目不会导致重新分配。但是,它需要移动项目以填补所删除元素创建的空洞。这本身可能是性能问题。 - PaulMcKenzie
2
如果您不关心元素的顺序,可以交换要删除的项和最后一项,然后使用pop_back。 - spectras
@PaulMcKenzie,这就是我忽略的问题。谢谢。 - CPPapprentice
1个回答

6

,它并没有。如果是的话,会使所有迭代器失效,但正如cppreference所述,它只会使得被删除的位置之后(包括end()迭代器)的迭代器和引用失效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接