Удаление элемента из vector c++
Необходимо удалить i-Й элемент вектора, если выполнится условие, пытаюсь и не получается. Помогите пожалуйста; https://i.stack.imgur.com/ugO2w.png
for (int i = 0; i < 99; i++) {
if (buls[i].pos.x < buls[i].targetPos.x) buls[i].pos.x += 1;
if (buls[i].pos.y < buls[i].targetPos.y) buls[i].pos.y += 1;
if (buls[i].pos.x > buls[i].targetPos.x) buls[i].pos.x -= 1;
if (buls[i].pos.y > buls[i].targetPos.y) buls[i].pos.y -= 1;
if (buls[i].pos == buls[i].targetPos) {
buls.erase(i); // здесь ошибка
}
buls[i].sprite.setPosition(buls[i].pos);
}
Ответы (1 шт):
Автор решения: Izviniaus
→ Ссылка
Предложу вам свой способ удаления элемента из массива vector:
for (int i = 0; i < buls.size(); i++) {
if (buls[i].pos == buls[i].targetPos) {
for (int j = i; j < buls.size()-1; j++) {
buls[j] = buls[j + 1];
}
i--; // необходимо, чтобы обработка остальной части массива продолжилось корректно
buls.pop_back();
}
}