std::vector<T,Allocator>::insert
(1) | ||
iterator insert( iterator pos, const T& value ); | (hasta C++11) | |
iterator insert( const_iterator pos, const T& value ); | (desde C++11) (hasta C++20) | |
constexpr iterator insert( const_iterator pos, const T& value ); | (desde C++20) | |
(2) | ||
iterator insert( const_iterator pos, T&& value ); | (desde C++11) (hasta C++20) | |
constexpr iterator insert( const_iterator pos, T&& value ); | (desde C++20) | |
(3) | ||
void insert( iterator pos, size_type count, const T& value ); | (hasta C++11) | |
iterator insert( const_iterator pos, size_type count, const T& value ); | (desde C++11) (hasta C++20) | |
constexpr iterator insert( const_iterator pos, size_type count, const T& value ); | (desde C++20) | |
(4) | ||
template<class InputIt > void insert( iterator pos, InputIt first, InputIt last ); | (hasta C++11) | |
template<class InputIt > iterator insert( const_iterator pos, | (desde C++11) (hasta C++20) | |
template<class InputIt > constexpr iterator insert( const_iterator pos, | (desde C++20) | |
(5) | ||
iterator insert( const_iterator pos, std::initializer_list<T> ilist ); | (desde C++11) (hasta C++20) | |
constexpr iterator insert( const_iterator pos, std::initializer_list<T> ilist ); | (desde C++20) | |
Inserta elementos en el contenedor en la ubicación especificada.
value
antes de la posición pos
.count
copias del valor value
antes de la posición pos
.[first, last)
antes de la posición pos
. Esta sobrecarga tiene el mismo efecto que la sobrecarga (3) si | (hasta C++11) |
Esta sobrecarga solo participa en la resolución de sobrecargas si | (desde C++11) |
first
y last
son iteradores en *this. ilist
antes de la posición pos
.Ocasiona una reasignación de memoria si el nuevo tamaño size() es mayor que la antigua capacidad capacity(). Si el nuevo tamaño (size()) es mayor que la capacidad (capacity()), se invalidan todas los iteradores y las referencias. De lo contrario, solamente los iteradores y referencias antes del punto de inserción se mantienen válidas. El iterador después del final también se invalida.
Contenido |
[editar]Parámetros
pos | - | Iterador antes del cual se insertará el contenido. La posición pos puede ser el iterador end(). |
value | - | Valor del elemento a insertar. |
first, last | - | El rango de los elementos a insertar, no pueden ser iteradores en el contenedor para el que se llama la función de inserción. |
ilist | - | Lita de inicializadores de la cual insertar los valores. |
Requisitos de tipo | ||
-T debe satisfacer los requisitos de CopyAssignable y CopyInsertable para poder usar la sobrecarga (1). | ||
-T debe satisfacer los requisitos de MoveAssignable y MoveInsertable para poder usar la sobrecarga (2). | ||
-T debe satisfacer los requisitos de CopyAssignable y CopyInsertable para poder usar la sobrecarga (3). | ||
-T debe satisfacer los requisitos de EmplaceConstructible para poder usar la sobrecarga (4,5). | ||
-T debe satisfacer los requisitos de MoveAssignable y MoveInsertable para poder usar la sobrecarga (4). se requiere solo si InputIt satisface a InputIterator pero no a ForwardIterator. (hasta C++17) | ||
-T debe satisfacer los requisitos de Swappable, MoveAssignable, MoveConstructible y MoveInsertable para poder usar la sobrecarga (4,5). (desde C++17) |
[editar]Valor de retorno
value
insertadopos
si count==0.pos
si first==last.pos
si ilist
está vacía.[editar]Complejidad
pos
y el final del contenedor.pos
y el final del contenedor.pos
y el final del contenedor.pos
y el final del contenedor.[editar]Excepciones
Si se lanza una excepción al insertar un solo elemento at the end, y T es CopyInsertable o std::is_nothrow_move_constructible<T>::value es true, no hay efectos (garantía de excepción fuerte).
Ejemplo
#include <iostream>#include <vector> void imprimir_vector(conststd::vector<int>& vec){for(auto x: vec){std::cout<<' '<< x;}std::cout<<'\n';} int main (){std::vector<int> vec(3,100); imprimir_vector(vec); auto it = vec.begin(); it = vec.insert(it, 200); imprimir_vector(vec); vec.insert(it,2,300); imprimir_vector(vec); // "it" ya no es válido, obtener uno nuevo: it = vec.begin(); std::vector<int> vec2(2,400); vec.insert(it+2, vec2.begin(), vec2.end()); imprimir_vector(vec); int arr[]={501,502,503}; vec.insert(vec.begin(), arr, arr+3); imprimir_vector(vec);}
Salida:
100 100 100 200 100 100 100 300 300 200 100 100 100 300 300 400 400 200 100 100 100 501 502 503 300 300 400 400 200 100 100 100
[editar]Véase también
(C++11) | Construye el elemento en el sitio. (función miembro pública) |
Agrega elementos al final. (función miembro pública) |