我是排序点,我为排序部分编写的代码完美工作,但我有一个问题。每隔一段时间(在随机时间)随机点就会被添加到向量的末尾,当我尝试使用pop_back()删除这些最后的元素时(因为我写了一小部分来检查以确保点的数量是同样),我最终陷入了一个无限循环,试图删除这些最后的元素,它们不会消失。有什么我应该知道的吗?即使我不试图删除它们,也有一些点会随机消失。我试图了解我需要做些什么来防止这些奇怪的点弹出,因为这些点按特定的顺序排序。std :: vector随机向元素添加元素
我只有三个插入方法和第一种是emplace_back(),接下来是一个插入,最后也是一个插入方法:
if (afterX >= spheres.capacity())
spheres.emplace_back(center);
else if(afterX == -1)
spheres.insert(spheres.begin(),center);
else
spheres.insert(std::next(spheres.begin(), afterX),center);
elementCount++;
这里是我的输出,获得一个理念:
Point: <5,0,0>
zFind: -1
<5,0,0>
Point: <10,0,0>
zFind: 0
yFind: 0
<5,0,0><10,0,0>
Point: <100,0,0>
zFind: 0
yFind: 0
<5,0,0><10,0,0><100,0,0><2.11207e-023,0,0>
Point: <30,0,0>
zFind: 0
yFind: 0
<5,0,0><10,0,0><30,0,0><100,0,0>
Point: <20,0,0>
zFind: 0
yFind: 0
<5,0,0><10,0,0><20,0,0><30,0,0><100,0,0><2.10934e-023,2.21351e+033,0><0,0,2.21351e+033><0,0,0>
正如你可以看到这一点:一点是在一系列正确添加(最小到最大),但这些都是在年底奇怪的额外的数字是有,然后消失。
感谢, 西蒙
最有可能的是,插入和从元素中删除元素会使所有现有的迭代器失效。但是如果没有看到代码,就很难给出真正的答案。 –
只需推回元素并进行排序。简化您的代码。 –