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) |
Вставляет элемент или элементы в контейнер.
value.value, используя hint в качестве необязательной подсказки о том, с какого места начать поиск.[first, last).ilist.nh является пустым дескриптором узла, ничего не делает. В противном случае вставляет принадлежащий nh элемент в контейнер и возвращает итератор, указывающий на вставленный элемент. Поведение не определено, если nh не пуст и get_allocator() != nh.get_allocator().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. |
||
Возвращаемое значение
nh был пуст, иначе — итератор, указывающий на вставленный элемент.Исключения
Сложность
O(1), в худшем случае O(size()).O(N), где N — число вставляемых элементов. В худшем случае: O(N * size() + N).O(1), в худшем случае O(size()).Пример
См. также
| конструирует элемент на месте (открытая функция-член) |
|
| конструирует элементы на месте, используя подсказку (открытая функция-член) |
|
создаёт 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