std::inplace_vector<T,N>::unchecked_emplace_back
template< class... Args >
constexpr reference unchecked_emplace_back( Args&&... args );
|
(начиная с C++26) | |
Добавляет новый элемент в конец контейнера. Обычно элемент создаётся с помощью placement-new для создания элемента на месте по местоположению, предоставленному контейнером. Аргументы args... передаются конструктору как std::forward<Args>(args)....
Эквивалентно return *try_emplace_back(std::forward<Args>(args)...);.
До вызова этой функции size() < capacity() должно быть true. В противном случае поведение не определено.
Никакие итераторы или ссылки не становятся недействительными, за исключением end(), которая становится недействительной, если происходит вставка.
Параметры
| args | - | аргументы для передачи в конструктор элемента |
| Требования к типу | ||
-
T
должен быть
EmplaceConstructible
в
inplace_vector
из
std::
forward
<
Args
>
(
args
)
...
.
|
||
Возвращаемое значение
back()
, т.е. ссылка на вставленный элемент.
Сложность
Константа.
Исключения
Любое исключение, выброшенное при инициализации вставляемого элемента. Если исключение выбрасывается по любой причине, данная функция не имеет эффекта ( гарантия строгой безопасности исключений ).
Примечания
|
Этот раздел не завершен
Причина: Объясните назначение данного API. |
Пример
#include <inplace_vector> #include <new> #include <print> #include <string> #include <utility> int main() { std::inplace_vector<std::pair<std::string, std::string>, 2> fauna; std::string dog{"\N{DOG}"}; fauna.unchecked_emplace_back("\N{CAT}", dog); fauna.unchecked_emplace_back("\N{CAT}", std::move(dog)); std::println("fauna = {}", fauna); // fauna.unchecked_emplace_back("BUG", "BUG"); // неопределенное поведение: нет места }
Вывод:
fauna = [("🐈", "🐕"), ("🐈", "🐕")]
Смотрите также
|
создаёт элемент на месте в конце
(публичная функция-член) |
|
|
добавляет диапазон элементов в конец
(публичная функция-член) |
|
|
добавляет элемент в конец
(публичная функция-член) |
|
|
пытается добавить элемент в конец
(публичная функция-член) |
|
|
пытается создать элемент на месте в конце
(публичная функция-член) |
|
|
пытается добавить диапазон элементов в конец
(публичная функция-член) |
|
|
безусловно добавляет элемент в конец
(публичная функция-член) |
|
|
удаляет последний элемент
(публичная функция-член) |
|
|
создаёт
std::back_insert_iterator
типа, выведенного из аргумента
(шаблон функции) |