迭代时如何从向量中删除元素

时间:2017-12-08 16:07:36

标签: c++ vector

我有一个向量,我需要比较每个元素并删除元素,直到只剩下一个。我有一些循环来迭代,但是一旦我删除了一些元素,我得到了#34;向量下标超出范围"。 我想这是因为我删除了元素,并试图迭代向量中的空白空间,但我认为我的循环条件会处理它。

基本上我存储形状,并移除重叠的形状直到剩下的形状,如果没有重叠,则在网格上移动位置。 (假设conditionmet()是正确的)

{{1}}

1 个答案:

答案 0 :(得分:0)

通常,您应该避免在迭代/循环中修改数组或向量的维度 - 因为您可能会遇到无效索引问题,或者在末尾附加了缺少的项目。

您不应在迭代过程中移除矢量对象上的元素,而应在迭代过程中创建一个新的矢量对象,复制您想要保留的内容。然后在循环之后,使用新修剪的变量重置/替换原始矢量变量。

相关问题