Freigeben über


hash_map::insert

HinweisHinweis

Diese API ist veraltet.Die Alternative ist unordered_map Class.

Fügt ein Element oder einen Bereich von Elementen in ein hash_map ein.

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
);

Parameter

Parameter

Description

_Val

Der Wert eines in das hash_map einzufügende Elements, es sei denn, das hash_map bereits dieses Element enthält (oder, im Allgemeinen, ein Element, dessen Schlüssel gleichwertig sortiert wird).

_Where

Ein Hinweis hinsichtlich des Position, an der das Suchen für den richtigen Punkt der Einfügung zu starten.

_First

Die Position des ersten Elements, einem hash_map kopiert werden.

_Last

Die Position direkt über dem letzten Element hinaus, einem hash_map kopiert werden.

Rückgabewert

Die erste insert-Memberfunktion gibt ein Paar zurück, dessen bool Komponentenrückgaben ausrichten, wenn eine Einfügung und false ausgeführt wurde, wenn das hash_map bereits ein Element enthält, dessen Schlüssel einen ein in der Reihenfolge verfügt und dessen Iteratorkomponente die Adresse zurückgibt, in der ein neues Element eingefügt wurde, oder der das Element bereits gefunden wurde.

Um auf die Iteratorkomponente eines Paars pr zurückgegebenen Daten diese Memberfunktion zuzugreifen, verwenden pr zurück.first und es dereferenzieren, Verwendung * (pr.first).Um auf die bool Komponente eines Paars pr zurückgegebenen Daten diese Memberfunktion zuzugreifen, verwenden pr zurück.second und es dereferenzieren, Verwendung * (pr.second).

Die zweite insert-Memberfunktion, die Hinweisversion, gibt einen Iterator zurück, der der Position zeigt, in der das neue Element in das hash_map eingefügt wurde.

Die letzten zwei insert-Memberfunktionen verhalten sich genauso wie die ersten zwei, außer dass sie verschieben Konstrukt der eingefügte Wert.

Hinweise

value_type eines Elements ist Paaren, sodass der Wert eines Elements ein geordnetes Paar mit der ersten Komponente gleich dem Schlüsselwert und der zweiten Komponente gleich den Datenwert des Elements ist.

Einfügen kann in amortisierter konstanter Zeit für die Hinweisversion Einfüge-, anstelle von logarithmischen Zeit auftreten, wenn die Einfügemarke sofort _Where folgt.

Die dritte Memberfunktion fügt die Sequenz von Elementwerten in ein hash_map entsprechend jedem Element ein, das durch einen Iterator im Bereich [First, Last) eines bestimmten Satzes bearbeitet wird.

Beispiel

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

Anforderungen

Header: <hash_map>

Namespace: stdext

Siehe auch

Referenz

hash_map Class

Standardvorlagenbibliothek