Namespaces
Variants

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

From cppreference.net
constexpr pointer try_push_back ( const T & value ) ;
(1) (desde C++26)
constexpr pointer try_push_back ( T && value ) ;
(2) (desde C++26)

Añade condicionalmente el elemento dado value al final del contenedor.

Si size ( ) == capacity ( ) es true , no hay efectos. De lo contrario, añade un objeto de tipo T :

1) El nuevo elemento se inicializa como una copia de value .
2) value se mueve al nuevo elemento.

No se invalidan iteradores ni referencias, excepto end() , que se invalida si ocurre la inserción.

Contenidos

Parámetros

value - el valor del elemento a añadir
Requisitos de tipo
-
T debe cumplir con los requisitos de EmplaceConstructible .

Valor de retorno

std:: addressof ( back ( ) ) si size ( ) < capacity ( ) , nullptr en caso contrario.

Complejidad

Constante.

Excepciones

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 ).

Notas

Ejemplo

#include <cassert>
#include <inplace_vector>
#include <string>
int main()
{
    std::inplace_vector<std::string, 2> pets;
    std::string dog{"dog"};
    std::string* p1 = pets.try_push_back("cat"); // sobrecarga (1)
    assert(*p1 == "cat" and pets.size() == 1);
    std::string* p2 = pets.try_push_back(std::move(dog)); // sobrecarga (2)
    assert(*p2 == "dog" and pets.size() == 2);
    assert(pets[0] == "cat" and pets[1] == "dog");
    assert(pets.size() == pets.capacity());
    std::string* p3 = pets.try_push_back("bug");
    assert(p3 == nullptr and pets.size() == 2);
}

Véase también

añade un elemento al final
(función miembro pública)
construye un elemento in-situ al final
(función miembro pública)
añade un rango de elementos al final
(función miembro pública)
intenta construir un elemento in-situ al final
(función miembro pública)
intenta añadir un rango de elementos al final
(función miembro pública)
construye incondicionalmente un elemento in-situ al final
(función miembro pública)
añade incondicionalmente un elemento 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)