std::inplace_vector<T,N>::push_back
constexpr reference push_back( const T& value ); | (1) | (начиная с C++26) |
constexpr reference push_back( T&& value ); | (2) | (начиная с C++26) |
Добавляет заданный элемент value в конец контейнера.
1) Новый элемент инициализируется как копия
value.
2)
value перемещается в новый элемент.Ни один итератор или ссылка не становятся недействительными, за исключением end(), который становится недействительным, если происходит вставка.
Параметры
| value | - | значение добавляемого элемента |
| Требования к типам | ||
-T должен соответствовать требованиям CopyInsertable для использования перегрузки (1). |
||
-T должен соответствовать требованиям MoveInsertable для использования перегрузки (2). |
||
Возвращаемое значение
back(), то есть ссылка на вставленный элемент.
Сложность
Константная.
Исключения
-
std::bad_alloc, еслиsize() == capacity()до вызова. - Любое исключение, выброшенное при инициализации вставляемого элемента.
Если по какой-либо причине выбрасывается исключение, эти функции не оказывают никакого эффекта (строгая гарантия безопасности исключений).
Пример
#include <inplace_vector>
#include <new>
#include <print>
#include <string>
int main()
{
std::inplace_vector<std::string, 2> fauna;
std::string dog{"\N{DOG}"};
fauna.push_back("\N{CAT}"); // overload (1)
fauna.push_back(std::move(dog)); // overload (2)
std::println("fauna = {}", fauna);
try
{
fauna.push_back("\N{BUG}"); // throws: there is no space
}
catch(const std::bad_alloc& ex)
{
std::println("{}", ex.what());
}
std::println("fauna = {}", fauna);
}
Возможный вывод:
fauna = ["🐈", "🐕"] std::bad_alloc 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/push_back