Добавление 101-го элемента зависит от capacity: при наличии места перераспределения нет, иначе vector выделяет новый буфер. Удаление последнего элемента уменьшает size, но не capacity.
Есть вектор из 100 элементов. Как работает механика добавления 101-го элемента, что произойдет при удалении этого элемента?
Добавление 101-го элемента зависит от capacity: при наличии места перераспределения нет, иначе vector выделяет новый буфер. Удаление последнего элемента уменьшает size, но не capacity.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Добавление 101-го элемента зависит от capacity: при наличии места перераспределения нет, иначе vector выделяет новый буфер. Удаление последнего элемента уменьшает size, но не capacity.
При перераспределении существующие элементы перемещаются или копируются, старые итераторы и ссылки становятся недействительными. Точный коэффициент роста стандарт не задаёт. Без перераспределения push_back сохраняет ссылки на прежние элементы, но меняет end().
pop_back уничтожает последний элемент, не возвращая автоматически зарезервированную память. reserve заранее задаёт достаточную ёмкость, а shrink_to_fit лишь просит реализацию уменьшить её.
Источник: eel.is.