Espacios de nombres
Variantes
Acciones

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

De cppreference.com
< cpp‎ | container‎ | multimap
 
 
 
 
template< class... Args >
iterator emplace( Args&&... args );
(desde C++11)

Inserta (emplaza) un nuevo elemento en el contenedor construido en el sitio con los argumentos dados args .

El uso cuidadoso de emplace permite construir el nuevo elemento evitando operaciones innecesarias de copia o movimiento. El constructor del nuevo elemento (es decir, std::pair<const Key, T>) se llama con exactamente los mismos argumentos que se le suplementaron a emplace, reenviados mediante std::forward<Args>(args)....


No se invalidan ni referencias ni iteradores.

Contenido

[editar] Parámetros

args - Los argumentos a reenviar al constructor del elemento.

[editar] Valor de retorno

Devuelve un iterador al elemento insertado.

[editar] Excepciones

Si se lanza una excepción por cualquier operación, esta función no surte efecto.

[editar] Complejidad

Logarítmica en el tamaño del contenedor.

[editar] Ejemplo

#include <iostream>
#include <utility>
#include <string>
#include <map>
 
int main()
{
    std::multimap<std::string, std::string> m;
 
    // usa el constructor de movimiento de pair
    m.emplace(std::make_pair(std::string("a"), std::string("a")));
 
    // usa el constructor de conversión de movimiento de pair
    m.emplace(std::make_pair("b", "abcd"));
 
    // usa el constructor de plantilla de pair
    m.emplace("d", "ddd");
 
    // usa el constructor de pieza por pieza de pair
    m.emplace(std::piecewise_construct,
              std::forward_as_tuple("c"),
              std::forward_as_tuple(10, 'c'));
 
 
    for (const auto &p : m) {
        std::cout << p.first << " => " << p.second << '\n';
    }
}

Salida:

a => a
b => abcd
c => cccccccccc
d => ddd

[editar] Véase también

Construye elementos en el sitio utilizando una pista.
(función miembro pública) [editar]
Inserta elementos o nodos (desde C++17)
(función miembro pública) [editar]