Spec-Zone.ru › C++

std::flat_multiset<Key,Compare,KeyContainer>::insert

iterator insert( const value_type& value )
(1) (начиная с C++23)
iterator insert( value_type&& value );
(2) (начиная с C++23)
iterator insert( const_iterator pos, const value_type& value );
(3) (начиная с C++23)
iterator insert( const_iterator pos, value_type&& value );
(4) (начиная с C++23)
template< class InputIt >
void insert( InputIt first, InputIt last );
(5) (начиная с C++23)
template< class InputIt >
void insert( std::sorted_equivalent_t, InputIt first, InputIt last );
(6) (начиная с C++23)
void insert( std::initializer_list<key_type> ilist );
(7) (начиная с C++23)
void insert( std::sorted_equivalent_t s, std::initializer_list<key_type> ilist );
(8) (начиная с C++23)

Вставляет элемент или элементы в контейнер. Порядок остальных эквивалентных элементов сохраняется.

1) Вставляет value. Если контейнер содержит элементы с эквивалентным ключом, вставляет элемент в верхнюю границу этого диапазона. Эквивалентно return emplace(value);.
2) Вставляет value. Если контейнер содержит элементы с эквивалентным ключом, вставляет элемент в верхнюю границу этого диапазона. Эквивалентно return emplace(std::move(value));.
3) Вставляет value в позицию, максимально близкую к позиции непосредственно перед pos. Эквивалентно return emplace_hint(pos, value);.
4) Вставляет value в позицию, максимально близкую к позиции непосредственно перед pos. Эквивалентно return emplace_hint(pos, std::move(value));.
5) Вставляет элементы из диапазона [first, last), как если бы последовательно выполнялись следующие операции:
  1. Добавляет элементы в c, как если бы это выполнялось с помощью c.insert(c.end(), first, last);.
  2. Сортирует диапазон вновь вставленных элементов относительно compare.
  3. Объединяет полученный отсортированный диапазон и отсортированный диапазон ранее существовавших элементов в один отсортированный диапазон.
Во время этапа слияния на месте может выделяться память.
6) Вставляет элементы из диапазона [first, last). Эквивалентно insert(first, last);.
7) Вставляет элементы из списка инициализации ilist. Эквивалентно insert(ilist.begin(), ilist.end());.
8) Вставляет элементы из списка инициализации ilist. Эквивалентно insert(s, ilist.begin(), ilist.end());.

Параметры

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

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

1-4) Итератор на вставленный элемент.
5-8) Нет.

Исключения

1-4) Зависит от базового контейнера.
5-8) Гарантия безопасности при исключениях отсутствует.

Сложность

1-4) Линейная.
5) N + M·log(M), где NN — это size() до выполнения операции, а M — это std::distance(first, last).
6) Линейная.
7) N + M·log(M), где NN — это size() до выполнения операции, а M — это ilist.size().
8) Линейная.

Пример

См. также

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/flat_multiset/insert

Spec-Zone.ru

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