std::vector<T,Allocator>::push_back - cppreference.com
De cppreference.com
</tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody>
| (1) | ||
|
|
(hasta C++20) | |
|
|
(desde C++20) | |
| (2) | ||
|
|
(desde C++11) (hasta C++20) |
|
|
|
(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.
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).
| ||
Valor de retorno
(Ninguno)
Complejidad
Constante amortizada.
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 |
(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).
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 ""