удалить элементы из вектора

Задача состоит в следующем: нахожу 2 нужных мне элемента в векторе и удаляю, но что-то не все так просто оказалось.

                    auto it = std::find(v.begin(), v.end(), pairs[i][0]);
                    auto pos = it - v.begin();
                    auto iter = std::find(v.begin(), v.end(), pairs[i][1]);
                    auto pos1 = iter - v.begin();

Вычислил позицию нужных мне элементов, а затем стираю их из вектора:

                    v.erase(v.begin() + pos);
                    v.erase(v.begin() + pos1);
                    v.resize(std::distance(v.begin(), v.end()));

При этом выхожу бывает за пределы вектора, так как после удаления элемента, меняется размер вектора, если я не ошибаюсь. Как решить эту проблему? Вычислять позицию второго элемента после того как удалю первый - не вариант.


Ответы (0 шт):