Compartir a través de


hash_map::insert

[!NOTA]

Esta API está obsoleta.La alternativa es unordered_map Class.

Inserta un elemento o un intervalo de elementos en un hash_map.

pair <iterator, bool> insert(
    const value_type& _Val
);
iterator insert(
    const_iterator _Where,
    const value_type& _Val
);
template<class InputIterator>
    void insert(
        InputIterator _First,
        InputIterator _Last
);
template<class ValTy>
    pair <iterator, bool> insert(
        ValTy&& _Val
);
template<class ValTy>
    iterator insert(
        const_iterator _Where,
        ValTy&& _Val
);

Parámetros

Parámetro

Descripción

_Val

El valor de un elemento en el hash_map a menos que el hash_map ya contiene ese elemento (o, más general, un elemento cuya clave equivalente está ordenada).

_Where

Una sugerencia con respecto al lugar para iniciar buscar el punto correcto de la inserción.

_First

La posición del primer elemento que se va a copiar de un hash_map.

_Last

La posición simplemente más allá del último elemento que se va a copiar de un hash_map.

Valor devuelto

La primera función miembro insert devuelve un par cuyo componente bool devuelve true si una inserción fue creada y false si el hash_map ya contenía un elemento cuya clave tenía un valor equivalente en orden, y cuyo componente de iterador devuelve la dirección donde un nuevo elemento se ha insertado o donde el elemento se ha adaptado ya.

Para tener acceso al componente de iterador de un par pr devuelto por esta función miembro, utilice pr.first, y desreferenciarlo, utilice * (pr.first).Para tener acceso al componente bool de un par pr devuelto por esta función miembro, utilice pr.second, y desreferenciarlo, utilice * (pr.second).

La segunda función miembro insert , la versión de sugerencias, devuelve un iterador que señale a la posición donde el nuevo elemento se ha insertado en el hash_map.

Las dos últimas funciones miembro insert se comportan igual que los dos primeros, salvo que mueven la construcción el valor insertado.

Comentarios

value_type de un elemento es par, de modo que el valor de un elemento es un par petición con el primer componente igual al valor de clave y el segundo componente igual al valor de los datos de elemento.

Inserción puede aparecer en la hora constante amortizada para la versión de sugerencias de la inserción, en lugar de tiempo logarítmico, si el punto de inserción inmediatamente sigue _Where.

La tercera función miembro inserta la secuencia de valores de un hash_map correspondiente a cada elemento dirigido por un iterador en el intervalo [First, Last) de un conjunto especificado.

Ejemplo

// hash_map_insert.cpp
// compile with: /EHsc
#include<hash_map>
#include<iostream>
#include <string>

int main()
{
    using namespace std;
    using namespace stdext;
    hash_map<int, int>::iterator hm1_pIter, hm2_pIter;

    hash_map<int, int> hm1, hm2;
    typedef pair<int, int> Int_Pair;

    hm1.insert(Int_Pair(1, 10));
    hm1.insert(Int_Pair(2, 20));
    hm1.insert(Int_Pair(3, 30));
    hm1.insert(Int_Pair(4, 40));

    cout<< "The original elements (Key => Value) of hm1 are:";
    for (hm1_pIter = hm1.begin(); hm1_pIter != hm1.end(); hm1_pIter++)
        cout << endl << " " << hm1_pIter -> first << " => "
             << hm1_pIter->second;
    cout << endl;

    pair< hash_map<int,int>::iterator, bool > pr;
    pr = hm1.insert(Int_Pair(1, 10));

    if (pr.second == true)
    {
        cout<< "The element 10 was inserted in hm1 successfully."
            << endl;
    }
    else
    {
        cout<< "The element 10 already exists in hm1\n with a key value of"
            << "((pr.first) -> first)= "<<(pr.first)-> first
            << "."<< endl;
    }

    // The hint version of insert
    hm1.insert(--hm1.end(), Int_Pair(5, 50));

    cout<< "After the insertions, the elements of hm1 are:";
    for (hm1_pIter = hm1.begin(); hm1_pIter != hm1.end(); hm1_pIter++)
        cout << endl << " " << hm1_pIter -> first << " => "
             << hm1_pIter->second;
    cout << endl;

    hm2.insert(Int_Pair(10, 100));

    // The templatized version inserting a range
    hm2.insert( ++hm1.begin(), --hm1.end() );

    cout<< "After the insertions, the elements of hm2 are:";
    for (hm2_pIter = hm2.begin(); hm2_pIter != hm2.end(); hm2_pIter++)
        cout << endl << " " << hm2_pIter -> first << " => "
             << hm2_pIter->second;
    cout << endl;

    // The templatized versions move constructing elements
    hash_map<int, string> hm3, hm4;
    pair<int, string> is1(1, "a"), is2(2, "b");

    hm3.insert(move(is1));
    cout << "After the move insertion, hm3 contains:" << endl
      << " " << hm3.begin()->first
      << " => " << hm3.begin()->second
      << endl;

    hm4.insert(hm4.begin(), move(is2));
    cout << "After the move insertion, hm4 contains:" << endl
      << " " << hm4.begin()->first
      << " => " << hm4.begin()->second
      << endl;
}
  
  

Requisitos

Encabezado: <hash_map>

Stdext deEspacio de nombres:

Vea también

Referencia

hash_map Class

Biblioteca de plantillas estándar