Compartir a través de


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

Vea también

Referencia

hash_map (Clase)

Biblioteca de plantillas estándar