Namespaces
Variants

std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>:: insert

From cppreference.net
iterator insert ( const value_type & value ) ;
(1) (начиная с C++23)
iterator insert ( value_type && value ) ;
(2) (начиная с C++23)
iterator insert ( const_iterator pos, const value_type & value ) ;
(3) (начиная с C++23)
iterator insert ( const_iterator pos, value_type && value ) ;
(4) (начиная с C++23)
template < class P >
iterator insert ( P && x ) ;
(5) (начиная с C++23)
template < class P >
iterator insert ( const_iterator pos, P && x ) ;
(6) (начиная с C++23)
template < class InputIt >
void insert ( InputIt first, InputIt last ) ;
(7) (начиная с C++23)
template < class InputIt >
void insert ( std:: sorted_equivalent_t , InputIt first, InputIt last ) ;
(8) (начиная с C++23)
void insert ( std:: initializer_list < key_type > ilist ) ;
(9) (начиная с C++23)
void insert ( std:: sorted_equivalent_t s, std:: initializer_list < key_type > ilist ) ;
(10) (начиная с C++23)

Вставляет элемент(ы) в контейнер.

1) Вставляет value . Эквивалентно return emplace ( value ) ; .
2) Вставляет value . Эквивалентно return emplace ( std :: move ( value ) ) ; .
3) Вставляет value в позицию, максимально близкую к позиции непосредственно перед pos . Эквивалентно return emplace_hint ( pos, value ) ; .
4) Вставляет value в позицию, максимально близкую к позиции непосредственно перед pos . Эквивалентно return emplace_hint ( pos, std :: move ( value ) ) ; .
5) Вставляет x в * this как если бы с помощью emplace ( std:: forward < P > ( x ) ) ; . Эта перегрузка участвует в разрешении перегрузки только если std:: is_constructible_v < pair < key_type, mapped_type > , P > равно true .
6) Вставляет x в * this в позицию, максимально близкую к позиции непосредственно перед pos . Эквивалентно return emplace_hint ( position, std:: forward < P > ( x ) ) ; . Эта перегрузка участвует в разрешении перегрузки только если std:: is_constructible_v < pair < key_type, mapped_type > , P > равно true .
7) Вставляет элементы из диапазона [ first , last ) как если бы последовательно выполнялись следующие операции:
  1. Добавляет элементы в c как если бы с помощью
    for ( ; first ! = last ; ++ first )
    {
    value_type value = * first ;
    c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
    c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
    }
  2. Сортирует диапазон вновь вставленных элементов относительно value_comp .
  3. Объединяет полученный отсортированный диапазон и отсортированный диапазон существующих элементов в единый отсортированный диапазон.
Может выделять память во время операции слияния на месте.
8) Вставляет элементы из диапазона [ first , last ) как если бы выполнялись следующие операции последовательно:
  1. Добавляет элементы в c как если бы с помощью
    for ( ; first ! = last ; ++ first )
    {
    value_type value = * first ;
    c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
    c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
    }
  2. Объединяет отсортированный диапазон вновь добавленных элементов и отсортированный диапазон существующих элементов в единый отсортированный диапазон.
Может выделять память во время операции слияния на месте.
9) Вставляет элементы из списка инициализации ilist . Эквивалентно insert ( ilist. begin ( ) , ilist. end ( ) ) ; .
10) Вставляет элементы из списка инициализации ilist . Эквивалентно insert ( s, ilist. begin ( ) , ilist. end ( ) ) ; .

Содержание

Параметры

pos - итератор на позицию, перед которой будет вставлен новый элемент
value - значение элемента для вставки
first, last - пара итераторов, определяющая исходный диапазон элементов для вставки
ilist - список инициализации, из которого будут вставлены значения
x - значение любого типа, которое можно прозрачно сравнивать с ключом
s - тег устранения неоднозначности, указывающий, что входная последовательность отсортирована (относительно value_comp() )
Требования к типам
-
InputIt должен удовлетворять требованиям LegacyInputIterator .

Возвращаемое значение

1-6) Итератор на вставленный элемент.
7-10) (нет)

Исключения

1-6) Если при выполнении любой операции возникает исключение, вставка не производится.
7-10) Гарантия безопасности исключений отсутствует. (?)

Сложность

1-6) Линейно от size() .
7) N + M·log ( M ) , где N — это size() до операции, а M — это std:: distance ( first, last ) .
8) Линейно по size() .
9) N + M·log ( M ) , где N — это size() до операции, а M — это ilist. size ( ) .
10) Линейная от N , где N это size() после операции.

Пример

Смотрите также

создаёт элемент на месте
(public member function)
создаёт элементы на месте с использованием подсказки
(public member function)
создаёт std::insert_iterator типа, выведенного из аргумента
(function template)