Проверьте, что размер вектора больше индекса, затем вызовите erase с итератором begin() + index. Индекс 4 соответствует пятому элементу.
Упрощённый способ удалить элемент по индексу из std::vector
Проверьте, что размер вектора больше индекса, затем вызовите erase с итератором begin() + index. Индекс 4 соответствует пятому элементу.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Нужно реализовать простой и прямой метод удаления элемента из вектора по заданному индексу.
std::vector<Element> items;
// удалить элемент с индексом 4
Ответ
Проверьте, что размер вектора больше индекса, затем вызовите erase с итератором begin() + index. Индекс 4 соответствует пятому элементу.
if (items.size() > 4) {
items.erase(items.begin() + 4);
}
В показанном исходнике вектор пуст, поэтому без проверки итератор был бы недопустимым. Здесь отсутствие элемента трактуется как отсутствие действия; можно выбрать исключение или код ошибки, если это требуется контрактом.
erase сдвигает последующие элементы влево, уменьшает size и инвалидирует итераторы и ссылки начиная с удалённой позиции. Ёмкость автоматически не уменьшается.