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()).Пример
См. также
| создаёт элемент на месте (публичный член-функция) |
|
| создаёт элементы на месте с использованием подсказки (публичный член-функция) |
|
создаёт 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