Partager via


unordered_map::operator[]

Recherche ou insère un élément avec la clé spécifiée.

Ty& operator[](const Key& keyval);
Ty& operator[](Key&& keyval);

Paramètres

Paramètre

Description

Keyval

Valeur de clé à rechercher ou à insérer.

Valeur de retour

Référence à la valeur de données de l'élément inséré.

Notes

Si la valeur de clé d'argument est introuvable, elle est insérée avec la valeur par défaut du type de données.

operator[] peut être utilisé pour insérer des éléments dans une classe map m en utilisant m[_Key] = DataValue ; où DataValue est la valeur du mapped_type de l'élément avec une valeur de clé de _Key.

Lorsque vous utilisez operator[] pour insérer des éléments, la référence retournée n'indique pas si l'insertion va modifier un élément existant ou en créer un nouveau. Les fonctions membres find et insert peuvent être utilisées pour déterminer si un élément avec une clé spécifiée était déjà présent avant l'insertion.

Exemple

// 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); 
    } 
 
  

Notes

La fonction membre détermine l'itérateur where comme valeur de retour de unordered_map::insert( unordered_map::value_type(keyval, Ty()) (elle insère un élément avec la clé spécifiée si aucun élément de ce type n'existe). Elle retourne ensuite une référence à (*where).second.

Configuration requise

En-tête : <unordered_map>

Espace de noms : std

Voir aussi

Référence

<unordered_map>

unordered_map, classe

unordered_map::find

unordered_map::insert

Autres ressources

<unordered_map> membres