Condividi tramite


hash_map::insert

[!NOTA]

Questo API è obsoleto.L'alternativa consiste unordered_map Class.

Inserire un elemento o un intervallo di elementi in 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
);

Parametri

Parametro

Descrizione

_Val

Il valore di un elemento da inserire nel hash_map a meno che il hash_map già contengono tale elemento, o più in generale, un elemento il cui la chiave equivalente è ordinata).

_Where

Un suggerimento per quanto riguarda il posto per avviare ricerca il punto corretto di inserimento.

_First

La posizione del primo elemento da un hash_map.

_Last

La posizione solo oltre l'ultimo elemento da un hash_map.

Valore restituito

La prima funzione membro insert restituisce una coppia di cui il componente di bool restituisce true se un inserimento sia stato scelto e false se il hash_map già contiene un elemento il cui la chiave ha un valore equivalente in ordine e di cui il componente iteratori restituisce l'indirizzo dove un nuovo elemento è stato inserito o in cui l'elemento è già stato individuato.

Per accedere al componente iteratore di una coppia pr restituito dalla funzione membro, utilizzare pr.primo/ae dereferenziarla, utilizzare * (pr.primo/a).Per accedere al componente bool di una coppia pr restituito dalla funzione membro, utilizzare pr.secondoe dereferenziarla, utilizzare * (pr.secondo).

La seconda funzione membro insert, la versione di suggerimento, restituisce un iteratore che indica la posizione in cui il nuovo elemento è stato immesso nel hash_map.

Le ultime due funzioni membro insert si comportano allo stesso modo dei primi due, con la differenza che spostano il costrutto il valore immesso.

Note

value_type di un elemento rappresenta una coppia, in modo che il valore di un elemento verrà una coppia ordinata con la prima parte uguale al valore della chiave e la seconda parte uguale al valore dei dati dell'elemento.

L'inserimento può verificarsi nel tempo costante ammortizzato per la versione di suggerimento di inserimento, anziché tempo logaritmico, se il punto di inserimento immediatamente successivo a _Where.

La terza funzione membro inserire la sequenza di valori degli elementi in un hash_map corrispondente a ogni elemento indirizzato mediante un iteratore nell'intervallo [innanzitutto, l'ultimo) di un insieme specificato.

Esempio

// 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;
}
  
  

Requisiti

intestazione: <hash_map>

Stdext diSpazio dei nomi:

Vedere anche

Riferimenti

hash_map Class

Libreria di modelli standard