Spec-Zone.ru › C++

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

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 является пустым дескриптором узла, ничего не делает. В противном случае вставляет принадлежащий nh элемент в контейнер и возвращает итератор, указывающий на вставленный элемент. Поведение не определено, если nh не пуст и get_allocator() != nh.get_allocator().
8) Если nh является пустым дескриптором узла, ничего не делает и возвращает конечный итератор. В противном случае вставляет принадлежащий nh элемент в контейнер и возвращает итератор, указывающий на элемент с ключом, эквивалентным nh.key(). hint используется в качестве необязательной подсказки о том, с какого места начать поиск. Поведение не определено, если nh не пуст и get_allocator() != nh.get_allocator().

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

Параметры

hint - итератор, используемый в качестве подсказки о месте вставки содержимого
value - значение вставляемого элемента
first, last - пара итераторов, задающая исходный диапазон элементов для вставки
ilist - список инициализации, из которого вставляются значения
nh - совместимый дескриптор узла
Требования к типам
-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()).

Пример

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/unordered_multiset/insert

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API