std::inplace_vector<T,N>::emplace_back
template< class... Args >
constexpr reference emplace_back( Args&&... args );
|
(desde C++26) | |
Agrega un nuevo elemento al final del contenedor. Normalmente, el elemento se construye usando placement-new para construirlo en el lugar proporcionado por el contenedor. Los argumentos args... se reenvían al constructor como std::forward<Args>(args)....
No se invalidan iteradores ni referencias, excepto end(), que se invalida si se produce la inserción.
Parámetros
| args | - | argumentos para reenviar al constructor del elemento |
| Requisitos de tipo | ||
-
T
debe cumplir con los requisitos de
EmplaceConstructible
.
|
||
Valor de retorno
back()
, es decir, una referencia al elemento insertado.
Complejidad
Constante.
Excepciones
- std::bad_alloc si size ( ) == capacity ( ) antes de la invocación.
- Cualquier excepción lanzada por la inicialización del elemento insertado.
Si se lanza una excepción por cualquier razón, estas funciones no tienen efecto ( strong exception safety guarantee ).
Ejemplo
Ejecutar este código
#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}"); // lanza excepción: no hay espacio } catch(const std::bad_alloc& ex) { std::println("{}", ex.what()); } std::println("fauna = {}", fauna); }
Salida posible:
fauna = [("🐈", "🐕"), ("🐈", "🐕")]
std::bad_alloc
fauna = [("🐈", "🐕"), ("🐈", "🐕")]
Véase también
|
añade un rango de elementos al final
(función miembro pública) |
|
|
añade un elemento al final
(función miembro pública) |
|
|
intenta añadir un elemento al final
(función miembro pública) |
|
|
intenta construir un elemento in-place al final
(función miembro pública) |
|
|
intenta añadir un rango de elementos al final
(función miembro pública) |
|
|
añade incondicionalmente un elemento al final
(función miembro pública) |
|
|
construye incondicionalmente un elemento in-place al final
(función miembro pública) |
|
|
elimina el último elemento
(función miembro pública) |
|
|
crea un
std::back_insert_iterator
del tipo inferido del argumento
(plantilla de función) |