std::inplace_vector<T,N>::emplace
template< class... Args >
constexpr iterator emplace( const_iterator position, Args&&... args );
|
(desde C++26) | |
Inserta un nuevo elemento en el contenedor directamente antes de pos. Normalmente, el elemento se construye utilizando placement new para construir el elemento in-place en la ubicación proporcionada por el contenedor. Los argumentos args... se reenvían al constructor como std::forward<Args>(args)....
| Esta sección está incompleta |
Parámetros
| pos | - | iterador antes del cual se construirá el nuevo elemento |
| args | - | argumentos para reenviar al constructor del elemento |
| Requisitos de tipo | ||
-
T
debe cumplir con los requisitos de
MoveAssignable
,
MoveInsertable
y
EmplaceConstructible
.
|
||
Valor de retorno
Un iterador al elemento insertado.
Complejidad
Lineal en la distancia entre pos y end() .
Excepciones
Lanza std::bad_alloc si antes de la invocación size ( ) == capacity ( ) . La función no tiene efectos ( garantía de seguridad de excepciones fuerte ).
Cualquier excepción lanzada por la inicialización del elemento insertado o por cualquier
LegacyInputIterator
operación. Los elementos en
[
0
,
pos
)
no son modificados.
Ejemplo
#include <cassert>
#include <inplace_vector>
#include <iostream>
#include <new>
#include <utility>
int main()
{
using P = std::pair<int, int>;
using I = std::inplace_vector<P, 3>;
auto nums = I{{0, 1}, {2, 3}};
auto it = nums.emplace(nums.begin() + 1, -1, -2);
assert((*it == P{-1, -2}));
assert((nums == I{P{0, 1}, {-1, -2}, {2, 3}}));
try
{
nums.emplace(nums.begin(), 1, 3); // throws: no space
}
catch(const std::bad_alloc& ex)
{
std::cout << ex.what() << '\n';
}
}
Posible salida:
std::bad_alloc
Véase también
|
inserta elementos
(función miembro pública) |
|
|
construye un elemento en el lugar al final
(función miembro pública) |