Я сортирую пункты, код, который я написал для сортирующей части, отлично работает, но у меня есть одна проблема. Каждое так часто (случайное время) случайные точки добавляются в конец вектора, и когда я пытаюсь pop_back() удалить эти последние элементы (потому что я написал небольшую часть, чтобы проверить, чтобы количество точек было тоже), я заканчиваю бесконечным циклом, пытаясь удалить эти последние элементы, которые просто не исчезнут. Есть что-то, что я должен знать? Также некоторые точки случайно исчезают, даже когда я не пытаюсь их удалить. Я пытаюсь понять, что мне нужно сделать, чтобы предотвратить появление этих странных точек, потому что эти точки сортируются в определенном порядке.std :: вектор случайным образом добавляет элементы в вектор
У меня есть только три способа вставки, а первая является 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>
Как вы можете видеть точку: Point корректно добавляется в серии (наименьшего к наибольшему), но это нечетные дополнительные цифры в конце, которые тут же исчезают.
Спасибо, Simon
Скорее всего, вставка и удаление элементов из вектора аннулирует все существующие итераторы. Но, не видя кода, будет трудно дать реальный ответ. –
Просто отбросьте элементы и выполните сортировку. Упрощает код. –