hash_map::operator
Hinweis |
---|
Diese API ist veraltet.Die Alternative ist unordered_map Class. |
Fügt ein Element in hash_map mit einem angegebenen Schlüsselwert ein.
Type& operator[](
const Key& _Key
);
Type& operator[](
Key&& _Key
);
Parameter
Parameter |
Description |
_Key |
Der Schlüsselwert des Elements, das eingefügt werden soll. |
Rückgabewert
Ein Verweis auf den Datenwert des eingefügten Elements.
Hinweise
Wenn der Argumentschlüsselwert nicht gefunden wird, wird diese zusammen mit dem Standardwert des Datentyps eingefügt.
operator[] wird auf dem Ziel in hash_map m mit verwendet werden
m[_Key] = DataValue;
wobei DataValue der Wert mapped_type des Elements mit einem Schlüsselwert von _Key ist.
Wenn er operator[] zu dem Ziel verwendet, gibt der zurückgegebene Verweis nicht an, ob eine Einfügung ein bereits vorhandenen Element geändert oder eine neue erstellt.Die Memberfunktionen Suche und Einfügen können verwendet werden, um zu bestimmen, ob ein Element mit einem bestimmten Schlüssel bereits vor einer Einfügung vorhanden ist.
Beispiel
// 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;
}
Ausgabe
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.
Anforderungen
Header: <hash_map>
Namespace: stdext