std::multimap<Key,T,Compare,Allocator>::emplace
De cppreference.com
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.
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
Logarítmica en el tamaño del contenedor.
Ejemplo
Ejecuta este código
#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
Véase también
(C++11) |
Construye elementos en el sitio utilizando una pista. (función miembro pública) |
| Inserta elementos o nodos (desde C++17) (función miembro pública) |