Namespaces
Variants

std::vector<T,Allocator>:: push_back

From cppreference.net

void push_back ( const T & value ) ;
(1) (constexpr desde C++20)
void push_back ( T && value ) ;
(2) (desde C++11)
(constexpr desde C++20)

Añade una copia de value al final del contenedor.

Si después de la operación el nuevo size() es mayor que la antigua capacity() ocurre una reasignación de memoria, en cuyo caso todos los iteradores (incluyendo el iterador end() ) y todas las referencias a los elementos quedan invalidados. De lo contrario, solo el iterador end() queda invalidado.

Contenidos

Parámetros

value - el valor del elemento a añadir

Requisitos de tipo
-
Si se cumple la siguiente condición, el comportamiento no está definido:
1) T no es CopyInsertable en vector .
2) T no es MoveInsertable en vector .
(desde C++11)

Complejidad

Constante amortizada.

Excepciones

Si se lanza una excepción (que puede ser debido a Allocator::allocate() o al constructor/operador de asignación de copia/desplazamiento de elementos), esta función no tiene efecto ( garantía fuerte de excepción ).

Si el constructor de movimiento de T no es noexcept y T no es CopyInsertable en * this , vector utilizará el constructor de movimiento que puede lanzar excepciones. Si lanza una excepción, la garantía se suspende y los efectos no están especificados.

(desde C++11)

Notas

Algunas implementaciones lanzan std::length_error cuando push_back provoca una realocación que excede max_size (debido a una llamada implícita a un equivalente de reserve ( size () + 1)) .

Ejemplo

#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
int main()
{
    std::vector<std::string> letters;
    letters.push_back("abc");
    std::string s{"def"};
    letters.push_back(std::move(s));
    std::cout << "std::vector letters holds: ";
    for (auto&& e : letters)
        std::cout << std::quoted(e) << ' ';
    std::cout << "\nMoved-from string s holds: " << std::quoted(s) << '\n';
}

Salida posible:

std::vector letters holds: "abc" "def"
Moved-from string s holds: ""

Véase también

construye un elemento en el lugar 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)