Condividi tramite


map::emplace_hint

Inserisce un elemento costruito in locale (senza che vengano eseguite operazioni di copia o di spostamento), con un suggerimento di posizione.

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

Parametri

Parametro

Descrizione

args

Gli argomenti inoltrati per costruire un elemento da inserire in una map a meno che la map non contenga già tale elemento, o più in generale, a meno che non contenga già un elemento la cui la chiave sia equivalentemente ordinata.

where

La posizione per avviare la ricerca per il punto di inserimento corretto. (Se tale punto è immediatamente seguito da where, l'inserimento può verificarsi in tempo costante ammortizzato invece che in tempo logaritmico.)

Valore restituito

Un iteratore all'elemento appena inserito.

Se l'inserimento ha avuto esito negativo perché l'elemento esiste già, restituisce un iteratore all'elemento esistente con la relativa chiave.

Note

Nessun iteratore o puntatore, viene invalidato da questa funzione.

Durante il collocamento, se viene generata un'eccezione, lo stato del contenitore non viene modificato.

Il value_type di un elemento è una coppia, tale che il valore di un elemento sarà una coppia ordinata con il primo componente uguale al valore della chiave e il secondo uguale al valore del dato dell'elemento.

Esempio

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

Output

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)

Requisiti

Intestazione: <map>

Spazio dei nomi: std

Vedere anche

Riferimenti

<map>

Classe map

Libreria di modelli standard