unordered_map::operator[]
Busca o inserta un elemento con la clave especificada.
Ty& operator[](const Key& keyval);
Ty& operator[](Key&& keyval);
Parámetros
Parámetro |
Descripción |
Keyval |
Valor de clave que se va a buscar o insertar. |
Valor devuelto
Referencia al valor de datos del elemento insertado.
Comentarios
Si el valor de clave de argumento no se encuentra, se inserta junto con el valor predeterminado del tipo de datos.
Se puede usar operator[] para insertar elementos en un mapa m mediante m[_Key] = DataValue; donde DataValue es el valor del mapped_type del elemento con un valor de clave de _Key.
Cuando se emplea operator[] para insertar elementos, la referencia devuelta no indica si una inserción cambia un elemento ya existente o crea uno nuevo. Se pueden usar las funciones miembro find e insert para determinar si ya existe un elemento con una clave especificada antes de una inserción.
Ejemplo
// std__unordered_map__unordered_map_operator_sub.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
#include <string>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// try to find and fail
std::cout << "c1['A'] == " << c1['A'] << std::endl;
// try to find and succeed
std::cout << "c1['a'] == " << c1['a'] << std::endl;
// redisplay contents
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// insert by moving key
std::tr1::unordered_map<string, int> c2;
std::string str("abc");
std::cout << "c2[std::move(str)] == " << c2[std::move(str)] << std::endl;
std::cout << "c2["abc"] == " << c2["abc"] << std::endl;
return (0);
}
Comentarios
La función miembro determina el iterador where como el valor devuelto de unordered_map::insert( unordered_map::value_type(keyval, Ty()). (Inserta un elemento con la clave especificada si no existe tal elemento). A continuación devuelve una referencia a (*where).second.
Requisitos
Encabezado: <unordered_map>
Espacio de nombres: std