hash_map::operator[]
Nota
Esta API está obsoleta.La alternativa es unordered_map (Clase).
Inserta un elemento en un hash_map con un valor de clave especificado.
Type& operator[](
const Key& _Key
);
Type& operator[](
Key&& _Key
);
Parámetros
Parámetro |
Descripción |
_Key |
El valor de la clave del elemento que se va a insertar. |
Valor devuelto
Una referencia al valor de los datos del elemento insertado.
Comentarios
Si el valor de clave de argumento no se encuentra, se incrusta junto con el valor predeterminado del tipo de datos.
operator[] se puede utilizar para insertar elementos en hash_map m mediante
m[_Key] = DataValue;
donde es el valor DataValue de mapped_type de elemento con un valor de clave de _Key.
Al utilizar operator[] para insertar elementos, la referencia devuelta no indica si una inserción cambia un elemento existente o está creando un nuevo. Las funciones búsqueda y inserción miembro se pueden utilizar para determinar si un elemento con una clave especificada ya exista antes de una inserción.
Ejemplo
// 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;
}
Resultados
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.
Requisitos
Encabezado: <hash_map>
Espacio de nombres: stdext