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 должны удовлетворять требованиям InputIterator.

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

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/w/cpp/container/unordered_multiset/insert

Spec-Zone.ru

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