Espacios de nombres
Variantes
Acciones

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

De cppreference.com
< cpp‎ | container‎ | vector
 
 
 
 
(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,

                 InputIt first, InputIt last );
(desde C++11)
(hasta C++20)
template<class InputIt >

constexpr iterator insert( const_iterator pos,

                           InputIt first, InputIt last );
(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.

1-2) Inserta el valor value antes de la posición pos.
3) Inserta count copias del valor value antes de la posición pos.
4) Inserta elementos del rango [first, last) antes de la posición pos.

Esta sobrecarga tiene el mismo efecto que la sobrecarga (3) si InputIt es un tipo entero.

(hasta C++11)

Esta sobrecarga solo participa en la resolución de sobrecargas si InputIt califica como InputIterator, para evitar ambigüedad con la sobrecarga (3).

(desde C++11)
El comportamiento no está definido si first y last son iteradores en *this.
5) Inserta elements de la lista de inicializadores 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

1-2) Iterador que apunta al valor value insertado
3) Iterador que apunta al primer elemento insertado, o a la posición pos si count==0.
4) Iterador que apunta al primer elemento insertado, o a la posición pos si first==last.
5) Iterador que apunta al primer elemento insertado, o a la posición pos si ilist está vacía.

[editar]Complejidad

1-2) Constante más lineal en la distancia entre la posición pos y el final del contenedor.
3) Lineal en count más lineal en la distancia entre la posición pos y el final del contenedor.
4) Lineal en std::distance(first, last) más lineal en la distancia entre la posición pos y el final del contenedor.
5) Lineal en ilist.size() más lineal en la distancia entre la posición 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)[editar]
Agrega elementos al final.
(función miembro pública)[editar]
close