Шаг 202.
Библиотека STL.
Контейнеры STL. Типы и функции контейнеров. Вставка и удаление элементов

    На этом шаге мы рассмотрим функции, осуществляющие вставку элементов.

  iterator контейнер:: insert (const T& value) 
  pair<iterator,bool> контейнер::insert (const T& value)
Обе версии вставляют копию value в ассоциативный контейнер. Первая сигнатура используется контейнерами, допускающими присутствие дубликатов (мультимножествами и мультиотображениями). В этом случае возвращается позиция нового элемента. Вторая сигнатура используется контейнерами, в которых дубликаты запрещены (множествами и отображениями). Если вставить значение не удается из-за того, что элемент с равным значением или ключом уже существует, возвращается позиция существующего элемента и false. Если вставка прошла успешно, возвращается позиция нового элемента и true. Т - тип элементов контейнера. Для отображений и мультиотображений представляет пару "ключ/значение". Функции либо выполняются успешно, либо не вносят изменений. Поддерживаются множествами, мультимножествами, отображениями, мультиотображениямн.

  iterator контейнер::insert (iterator pos, const T& value)
Вставляет копию value в позицию итератора pos. Возвращает позицию нового элемента. Для ассоциативных контейнеров (множеств, мультимножеств, отображений, мультиотображений) позиция используется только как рекомендация для начала поиска. Если вставка производится сразу же после pos, функция выполняется с амортизированной постоянной сложностью; в противном случае она выполняется с логарифмической сложностью. Если контейнером является множество или отображение, которое уже содержит элемент (или ключ), равный value, то функция не вносит изменений и возвращает позицию существующего элемента. В векторах и деках в результате выполнения операции итераторы и ссылки на другие элементы могут стать недействительными. Т - тип элементов контейнера. Для отображений и мультиотображений представляет пару "ключ/значение". Для строк value не передается по ссылке. В векторах и деках, если операции копирования (копирующий конструктор и оператор присваивания) не генерируют исключений, функция либо выполняется успешно, либо не вносит изменений. В остальных стандартных контейнерах функция либо выполняется успешно, либо не вносит изменений. Поддерживается векторами, деками, списками, множествами, мультимножествами, отображениями, мультиотображениями, строками.

  void контейнер::insert (iterator pos, size_type num, const T& value) 
Вставляет num копий value в позицию итератора pos. В векторах и деках в результате выполнения операции итераторы и ссылки на другие элементы могут стать недействительными. Т - тип элементов контейнера. Для отображений и мультиотображений представляет пару "ключ/значение". О Для строк value не передается по ссылке. В векторах и деках, если операции копирования (копирующий конструктор и оператор присваивания) не генерируют исключений, функция либо выполняется успешно, либо не вносит изменений. В списках функция либо выполняется успешно, либо не вносит изменений. Поддерживается векторами, деками, списками, строками,

  void контейнер::insert (Inputlterator beg, Inputlterator end)
Вставляет копии всех элементов в интервале [beg,end) в ассоциативный контейнер. Функция оформлена в виде шаблонной функции класса. Это означает, что элементы исходного интервала могут относиться к произвольному типу, который может быть преобразован к типу элементов контейнера. Поддерживается множествами, мультимножествами, отображениями, мультиотображениями.

  void контейнер::insert (iterator pos, Inputlterator beg, Inputlterator end)
Вставляет копии всех элементов в интервале [beg,end) в позицию итератора pos. Функция оформлена в виде шаблонной функции класса. Это означает, что элементы исходного интервала могут относиться к произвольному типу, который может быть преобразован к типу элементов контейнера. В векторах и деках в результате выполнения операции итераторы и ссылки на другие элементы могут стать недействительными. В списках функция либо выполняется успешно, либо не вносит изменений. Поддерживается векторами, деками, списками, строками.

  void контейнер::push_front (const T& value)
Вставляет копию value как новый первый элемент. Т - тип элементов контейнера. Эквивалент следующего вызова:
  insert(begin(),value)
В деках в результате выполнения операции итераторы других элементов становятся недействительными. Ссылки на другие элементы остаются действительными. Функция либо выполняется успешно, либо не вносит изменений. Поддерживается деками и списками.

  void контейнер::push_back (const T& value)
Вставляет копию value как новый последний элемент. Т - тип элементов контейнера. Эквивалент следующего вызова:
  insert (end(), value)
В векторах выполнение операции может привести к перераспределению памяти, в результате чего итераторы и ссылки на другие элементы становятся недействительными. В деках в результате выполнения операции итераторы других элементов становятся недействительными. Ссылки па другие элементы остаются действительными. Функция либо выполняется успешно, либо не вносит изменений. Поддерживается векторами, деками, списками, строками.

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг