Espacios de nombres
Variantes
Acciones

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

De cppreference.com
< cpp‎ | container‎ | vector
 
 
 
 
(1)
void push_back( const T& value );
(hasta C++20)
constexpr void push_back( const T& value );
(desde C++20)
(2)
void push_back( T&& value );
(desde C++11)
(hasta C++20)
constexpr void push_back( T&& value );
(desde C++20)

Anexa el elemento dado value al final del contenedor.

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

Si el nuevo tamaño (size()) es mayor que la capacidad (capacity()), incluyendo el iterador después del final, entonces se invalidan todos los iteradores y las referencias. De lo contrario, solamente se invalida el iterador después del final.

Contenido

[editar] Parámetros

value - El valor del elemento a anexar.
Requisitos de tipo
-
T debe satisfacer los requisitos de CopyInsertable para poder usar la sobrecarga (1).
-
T debe satisfacer los requisitos de MoveInsertable para poder usar la sobrecarga (2).

[editar] Valor de retorno

(Ninguno)

[editar] Complejidad

Constante amortizada.

[editar] Excepciones

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

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

(desde C++11)

Notas

Algunas implementaciones también lanzan std::length_error cuando push_back ocasiona una reasignación de memoria que excedería max_size, debido a llamar implícitamente a un equivalente de reserve(size()+1).

[editar] Ejemplo

#include <vector>
#include <iostream>
#include <iomanip>
 
int main()
{
    std::vector<std::string> letras;
 
    letras.push_back("abc");
    std::string s = "def";
    letras.push_back(std::move(s));
 
    std::cout << "vector alberga: ";
    for (auto&& i : letras) std::cout << std::quoted(i) << ' ';
    std::cout << "\nCadena fuente del movimiento alberga " << std::quoted(s) << '\n';
}

Salida:

vector alberga: "abc" "def" 
Cadena fuente del movimiento alberga ""

[editar] See also

Construye un elemento en el sitio al final.
(función miembro pública) [editar]
Remueve el último elemento.
(función miembro pública) [editar]