Namespaces
Variants

std::inplace_vector<T,N>::emplace

De es.cppreference.net
 
 
 
 
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)....

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)