Namespaces
Variants

std::flat_set<Key,Compare,KeyContainer>:: emplace

From cppreference.net

template < class ... Args >
std:: pair < iterator, bool > emplace ( Args && ... args ) ;
(начиная с C++23)
(constexpr начиная с C++26)

Вставляет новый элемент в контейнер, созданный на месте с заданными args , если в контейнере отсутствует элемент с таким ключом.

First, initializes an object t of type value_type with std:: forward < Args > ( args ) ... , then inserts t as if by
auto it = ranges::upper_bound(c, t, compare);
c.insert(it, std::move(t));

Эта перегрузка участвует в разрешении перегрузки только если std:: is_constructible_v < value_type, Args... > равно true .

Если value_type не является EmplaceConstructible в flat_set из args , поведение не определено.

Содержание

Параметры

args - аргументы для передачи конструктору элемента

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

Пара, состоящая из итератора на вставленный элемент (или на элемент, который предотвратил вставку) и значения bool установленного в true тогда и только тогда, когда вставка произошла.

Исключения

Если по какой-либо причине возникает исключение, эта функция не оказывает никакого эффекта ( гарантия строгой безопасности исключений ).

Сложность

Логарифмическая от размера контейнера.

Примечания

Тщательное использование emplace позволяет создавать новый элемент, избегая ненужных операций копирования или перемещения.

Пример

Смотрите также

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