Имеются дополнительные функции-члены, связанные со вставкой: это push_back(x) – вставка одного элемента в конец контейнера (реализована для всех последовательных контейнеров) и push_front(x) – вставка одного элемента в начало контейнера (реализована для дека и списка). Эти функции не возвращают значения.
Функция-член erase
реализована во всех последовательных контейнерах в двух вариантах: (1) с параметром-итератором pos, определяющим позицию удаляемого элемента, и с двумя параметрами-итераторами first и last, определяющими диапазон [first, last) удаляемых элементов. В обоих вариантах возвращается итератор, который указывает на элемент, расположенный за удаленным элементом (или удаленным диапазоном).Имеются дополнительные функции-члены, связанные с удалением: это pop_back – удаление последнего элемента из контейнера (реализована для всех последовательных контейнеров; поддержка для строк string добавлена в стандарте C++11), pop_front – удаление первого элемента из контейнера (реализована для дека и списка), clear – удаление всех элементов из контейнера (реализована для всех контейнеров). Эти функции не возвращают значения.
Альтернативой функциям insert и erase для
При выполнении вставки и удаления важно знать, когда в результате выполнения этих действий итераторы и ссылки становятся недействительными (одновременно со ссылками становятся недействительными и указатели).
Вектор
• если в результате вставки выполняется перераспределение памяти (увеличивается емкость), то становятся недействительными все итераторы и ссылки;
• если перераспределения памяти не производится, то итераторы и ссылки до позиции вставки остаются корректными, а прочие – недействительными.
• все итераторы и ссылки до позиции удаления остаются корректными, а прочие – недействительными.
Дек
• все итераторы делаются недействительными;
• ссылки делаются недействительными при вставке в середину дека и остаются корректными при вставке в начало или конец дека.
• все итераторы делаются недействительными;
• ссылки на оставшиеся элементы делаются недействительными при удалении элементов из середины дека и остаются корректными при удалении начальных или конечных элементов дека.
Список
• все итераторы и ссылки остаются корректными.
• все итераторы и ссылки на оставшиеся элементы списка остаются корректными.
1.2.8. Контейнеры-адаптеры и контейнеры, добавленные в стандарт C++11
В данном пункте, как и в пунктах 1.2.2–1.2.7, посвященных основным видам контейнеров, при описании конструкторов и функций-членов контейнеров не указывается дополнительный тип Alloc, который обычно устанавливается по умолчанию. Все рассматриваемые в данном пункте контейнеры определены в пространстве имен std.
Начнем с описания