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(), то есть ссылка на вставленный элемент.
Сложность
Постоянная.
Исключения
Любое исключение, выброшенное при инициализации вставляемого элемента. Если по какой-либо причине выбрасывается исключение, эта функция не оказывает никакого эффекта (строгая гарантия безопасности исключений).
Примечания
Пример
#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"); // undefined behavior: no space
}
Вывод:
fauna = [("🐈", "🐕"), ("🐈", "🐕")]
См. также
| конструирует элемент непосредственно в конце (открытая функция-член) |
|
| добавляет диапазон элементов в конец (открытая функция-член) |
|
| добавляет элемент в конец (открытая функция-член) |
|
| пытается добавить элемент в конец (открытая функция-член) |
|
| пытается сконструировать элемент непосредственно в конце (открытая функция-член) |
|
| пытается добавить диапазон элементов в конец (открытая функция-член) |
|
| безусловно добавляет элемент в конец (открытая функция-член) |
|
| удаляет последний элемент (открытая функция-член) |
|
создаёт std::back_insert_iterator типа, выведенного из аргумента (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/inplace_vector/unchecked_emplace_back