hash_map::operator[]
Notes
Cette API est obsolète.L'alternative est unordered_map, classe.
Insère un élément dans une hash_map avec une valeur de clé spécifiée.
Type& operator[](
const Key& _Key
);
Type& operator[](
Key&& _Key
);
Paramètres
Paramètre |
Description |
_Key |
La valeur de clé de l'élément qui sera inséré. |
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 hash_map m en utilisant
m[_Key] = DataValue;
où DataValue est la valeur du mapped_type de l'élément avec une 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 pré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
// hash_map_op_ref.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>
#include <string>
int main( )
{
using namespace std;
using namespace stdext;
typedef pair <const int, int> cInt2Int;
hash_map <int, int> hm1;
hash_map <int, int> :: iterator pIter;
// Insert a data value of 10 with a key of 1
// into a hash_map using the operator[] member function
hm1[ 1 ] = 10;
// Compare other ways to insert objects into a hash_map
hm1.insert ( hash_map <int, int> :: value_type ( 2, 20 ) );
hm1.insert ( cInt2Int ( 3, 30 ) );
cout << "The keys of the mapped elements are:";
for ( pIter = hm1.begin( ) ; pIter != hm1.end( ) ; pIter++ )
cout << " " << pIter -> first;
cout << "." << endl;
cout << "The values of the mapped elements are:";
for ( pIter = hm1.begin( ) ; pIter != hm1.end( ) ; pIter++ )
cout << " " << pIter -> second;
cout << "." << endl;
// If the key already exists, operator[]
// changes the value of the datum in the element
hm1[ 2 ] = 40;
// operator[] will also insert the value of the data
// type's default constructor if the value is unspecified
hm1[5];
cout << "The keys of the mapped elements are now:";
for ( pIter = hm1.begin( ) ; pIter != hm1.end( ) ; pIter++ )
cout << " " << pIter -> first;
cout << "." << endl;
cout << "The values of the mapped elements are now:";
for ( pIter = hm1.begin( ) ; pIter != hm1.end( ) ; pIter++ )
cout << " " << pIter -> second;
cout << "." << endl;
// opperator[] will also insert by moving a key
hash_map <string, int> hm2;
string str("a");
hm2[move(str)] = 1;
cout << "The moved key is " << hm2.begin()->first
<< ", with value " << hm2.begin()->second << endl;
}
Sortie
The keys of the mapped elements are: 1 2 3.
The values of the mapped elements are: 10 20 30.
The keys of the mapped elements are now: 1 2 3 5.
The values of the mapped elements are now: 10 40 30 0.
The moved key is a, with value 1.
Configuration requise
En-tête: <hash_map>
Espace de noms : stdext