Namespaces
Variants

std::unordered_multiset<Key,Hash,KeyEqual,Allocator>:: insert

From cppreference.net
iterator insert ( const value_type & value ) ;
(1) (начиная с C++11)
iterator insert ( value_type && value ) ;
(2) (начиная с C++11)
iterator insert ( const_iterator hint, const value_type & value ) ;
(3) (начиная с C++11)
iterator insert ( const_iterator hint, value_type && value ) ;
(4) (начиная с C++11)
template < class InputIt >
void insert ( InputIt first, InputIt last ) ;
(5) (начиная с C++11)
void insert ( std:: initializer_list < value_type > ilist ) ;
(6) (начиная с C++11)
iterator insert ( node_type && nh ) ;
(7) (начиная с C++17)
iterator insert ( const_iterator hint, node_type && nh ) ;
(8) (начиная с C++17)

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

1,2) Вставляет value .
3,4) Вставляет value , используя hint в качестве необязательной подсказки о том, с какого места следует начать поиск.
5) Вставляет элементы из диапазона [ first , last ) .
6) Вставляет элементы из списка инициализации ilist .
7) Если nh является пустым node handle , ничего не делает. В противном случае вставляет элемент, принадлежащий nh , в контейнер и возвращает итератор, указывающий на вставленный элемент. Поведение не определено, если nh не пуст и get_allocator ( ) ! = nh. get_allocator ( ) .
8) Если nh является пустым node handle , не выполняет никаких действий и возвращает конечный итератор. В противном случае вставляет элемент, принадлежащий nh , в контейнер и возвращает итератор, указывающий на элемент с ключом, эквивалентным nh. key ( ) . hint используется как необязательная подсказка о том, с чего следует начать поиск. Поведение не определено, если nh не пуст и get_allocator ( ) ! = nh. get_allocator ( ) .

Если после операции новое количество элементов становится больше старого max_load_factor() * bucket_count() происходит рехэширование.
Если происходит рехэширование (из-за вставки), все итераторы становятся недействительными. В противном случае (без рехэширования) итераторы остаются действительными. Если вставка успешна, указатели и ссылки на элемент, полученные пока он находился в node handle, становятся недействительными, а указатели и ссылки, полученные до его извлечения, становятся действительными. (since C++17)

Содержание

Параметры

hint - итератор, используемый как подсказка о том, куда вставлять содержимое
value - значение элемента для вставки
first, last - пара итераторов, определяющая исходный диапазон элементов для вставки
ilist - список инициализации, из которого берутся значения для вставки
nh - совместимый node handle
Требования к типам
-
InputIt должен удовлетворять требованиям LegacyInputIterator .

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

1-4) Итератор на вставленный элемент.
5,6) (нет)
7,8) Конечный итератор, если nh был пустым, итератор указывающий на вставленный элемент в противном случае.

Исключения

1-4) Если при выполнении любой операции возникает исключение, вставка не производится.

Сложность

1-4) В среднем случае: O(1) , в худшем случае O(size()) .
5,6) Средний случай: O(N) , где N - количество вставляемых элементов. Худший случай: O(N * size() + N) .
7,8) Средний случай: O(1) , худший случай O(size()) .

Пример

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

создаёт элемент на месте
(публичная функция-член)
создаёт элементы на месте с использованием подсказки
(публичная функция-член)
создаёт std::insert_iterator типа, выведенного из аргумента
(шаблон функции)