Удалите элемент через items.erase(items.begin() + 4), предварительно убедившись, что items.size() больше 4. Нумерация индексов начинается с нуля.
Удалить пятый элемент из std::vector
Удалите элемент через items.erase(items.begin() + 4), предварительно убедившись, что items.size() больше 4. Нумерация индексов начинается с нуля.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо избавиться от элемента с индексом 4 в массиве‑векторе объектов SomeClass.
std::vector<SomeClass> items;
// удалить 5-й элемент (индекс 4)
Ответ
Удалите элемент через items.erase(items.begin() + 4), предварительно убедившись, что items.size() больше 4. Нумерация индексов начинается с нуля.
if (items.size() <= 4)
throw std::out_of_range("fifth element does not exist");
items.erase(items.begin() + 4);
В исходном примере vector ещё пуст, поэтому без проверки операция некорректна. Нужен . Удаление сохраняет взаимный порядок оставшихся элементов, сдвигая хвост влево, и имеет линейную стоимость по длине хвоста. Если порядок не нужен, обмен с последним и pop_back дают иной, более дешёвый контракт.