Espacios de nombres
Variantes

std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::emplace

De cppreference.com

[edit template]
 
 
 
 
<tbody> </tbody>
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)....


Si ocurre una redispersión (rehashing) debido a la inserción, se invalidan todos los iteradores. De lo contrario, no se afectan los iteradores. Las referencias no se invalidan. La dispersión vuelve a ocurrir solo si el nuevo número de elementos es mayor que max_load_factor()*bucket_count().

Parámetros

args - Los argumentos a reenviar al constructor del elemento.

Valor de retorno

Devuelve un iterador al elemento insertado.

Excepciones

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

Complejidad

Constante amortizada en promedio, en el peor de los casos lineal en el tamaño del contenedor.

Ejemplo

#include <iostream>
#include <utility>
#include <string>
#include <unordered_map>

int main()
{
    std::unordered_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';
    }
}

Posible salida:

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

Véase también

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