Удаление элемента из vector c++

Рейтинг: -3Ответов: 1Опубликовано: 13.02.2023

Необходимо удалить i-Й элемент вектора, если выполнится условие, пытаюсь и не получается. Помогите пожалуйста; https://i.sstatic.net/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);
    }

Ответы

▲ 0

Предложу вам свой способ удаления элемента из массива 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();
    }
}