std::inplace_vector<T,N>:: emplace_back
|
template
<
class
...
Args
>
constexpr reference emplace_back ( Args && ... args ) ; |
(начиная с C++26) | |
Добавляет новый элемент в конец контейнера. Обычно элемент конструируется с использованием placement- new для создания элемента на месте в расположении, предоставленном контейнером. Аргументы args... передаются конструктору как std:: forward < Args > ( args ) ... .
Никакие итераторы или ссылки не инвалидируются, за исключением
end()
, который инвалидируется, если происходит вставка.
Содержание |
Параметры
| args | - | аргументы для передачи конструктору элемента |
| Требования к типу | ||
-
T
должен соответствовать требованиям
EmplaceConstructible
.
|
||
Возвращаемое значение
back()
, т.е. ссылка на вставленный элемент.
Сложность
Константа.
Исключения
- std::bad_alloc если size ( ) == capacity ( ) до вызова.
- Любое исключение, выброшенное при инициализации вставляемого элемента.
Если исключение выбрасывается по любой причине, эти функции не оказывают никакого эффекта ( strong exception safety guarantee ).
Пример
#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.emplace_back("\N{CAT}", dog); fauna.emplace_back("\N{CAT}", std::move(dog)); std::println("fauna = {}", fauna); try { fauna.emplace_back("\N{BUG}", "\N{BUG}"); // выбрасывает исключение: нет места } catch(const std::bad_alloc& ex) { std::println("{}", ex.what()); } std::println("fauna = {}", fauna); }
Возможный вывод:
fauna = [("🐈", "🐕"), ("🐈", "🐕")]
std::bad_alloc
fauna = [("🐈", "🐕"), ("🐈", "🐕")]
Смотрите также
|
добавляет диапазон элементов в конец
(public member function) |
|
|
добавляет элемент в конец
(public member function) |
|
|
пытается добавить элемент в конец
(public member function) |
|
|
пытается сконструировать элемент на месте в конце
(public member function) |
|
|
пытается добавить диапазон элементов в конец
(public member function) |
|
|
безусловно добавляет элемент в конец
(public member function) |
|
|
безусловно конструирует элемент на месте в конце
(public member function) |
|
|
удаляет последний элемент
(public member function) |
|
|
создаёт
std::back_insert_iterator
типа, выведенного из аргумента
(function template) |