map::emplace_hint
Inserta un elemento construido en contexto (no se realiza ninguna operación de copia o de movimiento), con una sugerencia de colocación.
template<class... Args>
iterator emplace_hint(
const_iterator where,
Args&&... args);
Parámetros
Parámetro |
Descripción |
args |
Argumentos reenviados para construir un elemento que se va a insertar en el mapa a menos que el mapa ya contenga ese elemento o, más en general, a menos que ya contenga un elemento cuya clave esté ordenada de manera equivalente. |
where |
Lugar donde se va a iniciar la búsqueda del punto de inserción correcto. (Si ese punto precede inmediatamente a where, la inserción se puede realizar en tiempo constante amortizado en lugar de en tiempo logarítmico). |
Valor devuelto
Iterador al elemento recién insertado.
Si se produjo un error en la inserción porque el elemento ya existe, devuelve un iterador al elemento existente con su clave.
Comentarios
Esta función no invalida ningún iterador ni ninguna referencia.
Durante el emplazamiento, si se produce una excepción, el estado del contenedor no se modifica.
El value_type de un elemento es un par, de modo que el valor de un elemento será un par ordenado en el que el primer componente es igual que el valor de clave y el segundo componente es igual que el valor de datos del elemento.
Ejemplo
// map_emplace.cpp
// compile with: /EHsc
#include <map>
#include <string>
#include <iostream>
using namespace std;
template <typename M> void print(const M& m) {
cout << m.size() << " elements: " << endl;
for (const auto& p : m) {
cout << "(" << p.first << "," << p.second << ") ";
}
cout << endl;
}
int main()
{
map<string, string> m1;
// Emplace some test data
m1.emplace("Anna", "Accounting");
m1.emplace("Bob", "Accounting");
m1.emplace("Carmine", "Engineering");
cout << "map starting data: ";
print(m1);
cout << endl;
// Emplace with hint
// m1.end() should be the "next" element after this emplacement
m1.emplace_hint(m1.end(), "Doug", "Engineering");
cout << "map modified, now contains ";
print(m1);
cout << endl;
}
Resultados
map starting data: 3 elements:
(Anna,Accounting) (Bob,Accounting) (Carmine,Engineering)
map modified, now contains 4 elements:
(Anna,Accounting) (Bob,Accounting) (Carmine,Engineering) (Doug,Engineering)
Requisitos
Encabezado: <map>
Espacio de nombres: std