Compartir a través de


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

Vea también

Referencia

<unordered_map>

unordered_map (Clase)

unordered_map::find

unordered_map::insert

Otros recursos

miembros de <unordered_map>