Udostępnij za pośrednictwem


map::emplace_hint

Wstawia element skonstruowany w miejscu (bez wykonania żadnej czynności kopiowania ani przenoszenia) ze wskazówką położenia.

template<class... Args>
   iterator emplace_hint(
      const_iterator where,
      Args&&... args);

Parametry

Parametr

Opis

args

Argumenty przekazywane do konstruowania elementu do wstawienia do mapy, chyba że mapa już zawiera ten element lub, bardziej ogólnie, chyba że już zawiera element, którego klucz jest równoważnie uporządkowany.

where

Miejsce, w którym należy rozpocząć wyszukiwanie poprawnego punktu wstawiania. (Jeśli ten punkt bezpośrednio poprzedza where, wstawianie może wystąpić w stałym, amortyzowanym czasie zamiast czasu logarytmicznego.)

Wartość zwracana

Iterator do nowo wstawionego elementu.

Jeśli wstawianie się nie powiodło, ponieważ element już istnieje, zwraca iterator do istniejącego elementu wraz z jego kluczem.

Uwagi

Żadne iteratory ani odwołania nie są unieważniane przez tę funkcję.

Podczas umieszczenia, jeśli zgłoszono wyjątek, stan kontenera nie jest modyfikowany.

value_type elementu jest parą, dzięki czemu wartość elementu będzie uporządkowaną parą z pierwszym składnikiem równym wartości klucza i drugim składnikiem równym wartości danych elementu.

Przykład

// map_emplace.cpp
// compile with: /EHsc
#include <map>
#include <string>
#include <iostream>

using namespace std;

template <typename M> void print(const M& m) {
    cout << m.size() << " elements: " << endl;

    for (const auto& p : m) {
        cout << "(" << p.first <<  "," << p.second << ") ";
    }

    cout << endl;
}

int main()
{
    map<string, string> m1;

    // Emplace some test data
    m1.emplace("Anna", "Accounting");
    m1.emplace("Bob", "Accounting");
    m1.emplace("Carmine", "Engineering");

    cout << "map starting data: ";
    print(m1);
    cout << endl;

    // Emplace with hint
    // m1.end() should be the "next" element after this emplacement
    m1.emplace_hint(m1.end(), "Doug", "Engineering");

    cout << "map modified, now contains ";
    print(m1);
    cout << endl;
}

Dane wyjściowe

map starting data: 3 elements:
(Anna,Accounting) (Bob,Accounting) (Carmine,Engineering)

map modified, now contains 4 elements:
(Anna,Accounting) (Bob,Accounting) (Carmine,Engineering) (Doug,Engineering)

Wymagania

Nagłówek: <map>

Przestrzeń nazw: std

Zobacz też

Informacje

<map>

map — Klasa

Standardowa biblioteka szablonów