Partager via


hash_map::insert

[!REMARQUE]

Cette API est obsolète.l'alternative est unordered_map Class.

Insère un élément ou une plage d'éléments dans 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
);

Paramètres

Paramètre

Description

_Val

La valeur d'un élément à insérer dans le hash_map à moins que le hash_map contienne déjà cet élément (ou, plus généralement, un élément dont la clé est de façon équivalente ordonnée).

_Where

Une aide concernant l'emplacement pour commencer à rechercher le point correct d'implémentation.

_First

Position du premier élément à copier d'un hash_map.

_Last

La position immédiatement au delà de le dernier élément à copier d'un hash_map.

Valeur de retour

La première fonction membre d' insert retourne une paire de le composant de bool retourne la valeur true si une insertion a été faite et false si le hash_map contenait déjà un élément dont la clé a eu une valeur équivalente dans l'ordre, et dont le composant itérateur retourne l'adresse où un nouvel élément a été inséré ou lorsque l'élément a déjà été localisé.

Pour accéder au composant d'itérateur d'une paire pr retourné par cette fonction membre, utilisez pr.first, et le déréférencement, utilisez * (pr.first).Pour accéder au composant d' bool d'une paire pr retourné par cette fonction membre, utilisez pr.second, et le déréférencement, utilisez * (pr.second).

La deuxième fonction membre d' insert , la version des indicateurs, retourne un itérateur qui indique la position où le nouvel élément a été inséré dans le hash_map.

Les deux dernières fonctions membres d' insert se comportent de la même manière que les deux premiers, mais qu'elles passent l'élément la valeur insérée.

Notes

value_type d'un élément sont des paires, afin que la valeur d'un élément soit une paire triée de le premier composant égale à la valeur de la clé et le deuxième composant égale à la valeur de données de l'élément.

L'implémentation peut se produire dans le temps constante amortie pour la version des indicateurs de l'insertion, au lieu du temps logarithmique, si le point d'insertion suit immédiatement _Where.

La troisième fonction membre insère la séquence de valeurs d'élément dans un hash_map correspondant à chaque élément traité par un itérateur de dans la plage [d'abord, en dernier) d'un jeu spécifié.

Exemple

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

Configuration requise

en-tête : <hash_map>

Stdext del'espace de noms :

Voir aussi

Référence

hash_map Class

Modèles Standard