Espacios de nombres
Variantes
Acciones

std::multimap<Key,T,Compare,Allocator>::insert

De cppreference.com
< cpp‎ | container‎ | multimap
 
 
 
 
iterator insert( const value_type& value );
(1)
iterator insert( value_type&& value );
(1) (desde C++17)
template< class P >
iterator insert( P&& value );
(2) (desde C++11)
(3)
iterator insert( iterator hint, const value_type& value );
(hasta C++11)
iterator insert( const_iterator hint, const value_type& value );
(desde C++11)
iterator insert( const_iterator hint, value_type&& value );
(3) (desde C++17)
template< class P >
iterator insert( const_iterator hint, P&& value );
(4) (desde C++11)
template< class InputIt >
void insert( InputIt first, InputIt last );
(5)
void insert( std::initializer_list<value_type> ilist );
(6) (desde C++11)
iterator insert( node_type&& nh );
(7) (desde C++17)
iterator insert( const_iterator hint, node_type&& nh );
(8) (desde C++17)

Inserta uno o varios elementos en el contenedor.

1-2) Inserta value. Si el contenedor contiene un elemento con una clave equivalente, inserta en el límite superior de ese rango.(desde C++11) La sobrecarga (2) es equivalente a emplace(std::forward<P>(value)) y solo participa en la resolución de sobrecargas si std::is_constructible<value_type, P&&>::value == true.
3-4) Inserta value en la posición lo más cerca posible, justo antes(desde C++11) de hint. La sobrecarga (4) es equivalente a emplace_hint(hint, std::forward<P>(value)) y solo participa en la resolución de sobrecargas si std::is_constructible<value_type, P&&>::value == true.
5) Inserta elementos del rango [first, last).
6) Inserta elementos de la lista de inicializadores ilist.
7) Si nh es un identificador de nodo vacío, no hace nada. De lo contrario, inserta el elemento propiedad de nh en el contenedory devuelve un iterador que apunta al elemento insertado Si existe un rango que contiene elementos con claves equivalentes a nh.key(), el elemento se inserta al final de ese rango. El comportamiento no está definido si nh no está vacío y get_allocator() != nh.get_allocator().
8) Si nh es un identificador de nodo vacío, no hace nada y devuelve el iterador al final. De lo contrario, inserta el elemento propiedad de nh en el contenedor, y devuelve el iterador que apunta al elemento con clave equivalente a nh.key() El elemento se inserta lo más cerca posible de la posición justo antes de hint. El comportamiento no está definido si nh no está vacío y get_allocator() != nh.get_allocator().

No se invalidan ni referencias ni iteradores. Si la inserción tiene éxito, se invalidan los punteros y las referencias al elemento obtenido mientras se alberga en el identificador de nodo (node handle), y los punteros y las referencias obtenidas para ese elemento antes que se extrajera se vuelven válidas. (desde C++17)

Contenido

[editar] Parámetros

hint -
El iterador usado como una sugerencia de dónde iniciar la búsqueda. (hasta C++11)
El iterador a la posición antes de la cual se insertará el nuevo elemento. (desde C++11)
value - El valor del elemento a insertar.
first, last - El rango de los elementos a insertar.
ilist - La lista de inicializadores a partir de la cual insertar los valores.
nh - Un identificador de nodo compatible.
Requisitos de tipo
-
InputIt debe satisfacer los requisitos de InputIterator.

[editar] Valor de retorno

1-4) Devuelve un iterador al elemento insertado.
5-6) (Ninguno)
7,8) Un iterador al final si nh estaba vacío, un iterador que apunta al elemento insertado de lo contrario.

[editar] Excepciones

1-4) Si se lanza una excepción por cualquier operación, la inserción no surte efecto.

[editar] Complexity

1-2) Logarítmica en el tamaño del contenedor, O(log(size())).
3-4) Constante amortizada si la inserción ocurre en la posición justo después de la pista, logarítmica en el tamaño del contenedor de lo contrario.
(hasta C++11)
3-4) Constante amortizada si la inserción ocurre en la posición justo antes de la pista, logarítmica en el tamaño del contenedor de lo contrario.
(desde C++11)
5-6) O(N*log(size() + N)), donde N es el número de elementos a insertar.
7) Logarítmica en el tamaño del contenedor, O(log(size())).
8) Constante amortizada si la inserción ocurre en la posición justo antes de la pista, logarítmica en el tamaño del contenedor de lo contrario.

[editar] Example

#include <iostream>
#include <string>
#include <map>
#include <functional>
#include <string_view>
 
template<class M>
void imprimir(const std::string_view comentario, const M& mmap)
{
    std::cout << comentario << " ";
    for (const auto & e : mmap)
        std::cout << "{" << e.first << "," << e.second << "} ";
    std::cout << '\n';
}
 
int main()
{
    // inicialización por lista
    std::multimap<int, std::string, std::greater<int>> mmap
        {{2, "foo"}, {2, "bar"}, {3, "baz"}, {1, "abc"}, {5, "def"}};
    imprimir("#1", mmap);
 
    // insertar usando value_type
    mmap.insert(decltype(mmap)::value_type(5, "pqr"));
    imprimir("#2", mmap);
 
    // insertar usando pair
    mmap.insert(std::pair{6, "uvw"});
    imprimir("#3", mmap);
 
    mmap.insert({7, "xyz"});
    imprimir("#4", mmap);
 
    // insertar usando initializer_list
    mmap.insert({{5, "one"}, {5, "two"}});
    imprimir("#5", mmap);
}

Salida:

#1 {5,def} {3,baz} {2,foo} {2,bar} {1,abc}
#2 {5,def} {5,pqr} {3,baz} {2,foo} {2,bar} {1,abc}
#3 {6,uvw} {5,def} {5,pqr} {3,baz} {2,foo} {2,bar} {1,abc}
#4 {7,xyz} {6,uvw} {5,def} {5,pqr} {3,baz} {2,foo} {2,bar} {1,abc}
#5 {7,xyz} {6,uvw} {5,def} {5,pqr} {5,one} {5,two} {3,baz} {2,foo} {2,bar} {1,abc}

[editar] Véase también

(C++11)
Construye el elemento en el sitio.
(función miembro pública) [editar]
Construye elementos en el sitio utilizando una pista.
(función miembro pública) [editar]