Spec-Zone.ru › C++

std::hive<T,Allocator>::insert

iterator insert( const T& value );
(1) (начиная с C++26)
iterator insert( T&& value );
(2) (начиная с C++26)
iterator insert( const_iterator hint, const T& value );
(3) (начиная с C++26)
iterator insert( const_iterator hint, T&& value );
(4) (начиная с C++26)
void insert( std::initializer_list<T> ilist );
(5) (начиная с C++26)
template< class InputIter >
void insert( InputIter first, InputIter last );
(6) (начиная с C++26)
void insert( size_type count, const T& value );
(7) (начиная с C++26)

Вставляет элементы в hive в неопределённое место.

1,3) Вставляет копию value.
2,4) Вставляет value, возможно используя семантику перемещения, как если бы был вызван emplace(std::forward<decltype(x)>(x));.
5) Вставляет элементы из списка инициализации ilist.
6) Вставляет элементы из диапазона [first, last). Эквивалентно
insert_range(ranges::subrange(first, last));.
7) Вставляет count копий value.
5,6) Каждый итератор входного диапазона разыменовывается ровно один раз.
5,6,7) Для каждого вставленного элемента конструируется ровно один объект типа T.

Если вставляется элемент, итератор end() становится недействительным.

Параметры

value - значение вставляемого элемента
hint - игнорируется (существует только для совместимости)
ilist - список инициализации, из которого берутся вставляемые значения
first, last - пара итераторов, задающая диапазон вставляемых элементов (не могут быть итераторами контейнера, для которого вызывается insert)
count - количество вставляемых элементов
Требования к типам
-InputIter должен удовлетворять требованиям LegacyInputIterator для использования перегрузки (6).
-T должен удовлетворять требованиям EmplaceConstructible для использования перегрузок (1–6).
-T должен удовлетворять требованиям CopyInsertable для использования перегрузки (7).

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

1-4) Итератор, указывающий на новый элемент.

Сложность

1-4) Константная.
5,6) Линейная относительно количества вставленных элементов.
7) Линейная относительно count.

Пример

#include <hive>
#include <initializer_list>
#include <print>

int main()
{
    std::hive<int> colony(3, 10);
    std::println("1. {}", colony);

    colony.insert(20); // overload (1)
    std::println("2. {}", colony);

    colony.insert({30, 31, 32}); // overload (5)
    std::println("3. {}", colony);

    const auto list = {40, 41, 42};
    colony.insert(list.begin(), list.end()); // overload (6)
    std::println("4. {}", colony);

    colony.insert(4, 50); // overload (7)
    std::println("5. {}", colony);
}

Возможный вывод:

1. [10, 10, 10]
2. [10, 10, 10, 20]
3. [10, 10, 10, 20, 30, 31, 32]
4. [10, 10, 10, 20, 30, 31, 32, 40, 41, 42]
5. [10, 10, 10, 20, 30, 31, 32, 40, 41, 42, 50, 50, 50, 50]

См. также

insert_range
вставляет диапазон элементов
(открытая функция-член)
emplaceemplace_hint
создаёт элемент на месте
(открытая функция-член)

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

Spec-Zone.ru

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