Condividi tramite


unordered_map::insert

aggiunge gli elementi.

std::pair<iterator, bool> insert(const value_type& val);
iterator insert(iterator where, const value_type& val);
template<class InIt>
    void insert(InIt first, InIt last);
template<class ValTy>
    pair<iterator, bool> insert(ValTy&& val);
template<class ValTy>
    iterator insert(const_iterator where, ValTy&& val);

Parametri

Parametro

Descrizione

InIt

il tipo di iteratore.

ValTy

Il tipo sul posto dell'argomento del costruttore.

first

A partire dall'intervallo da inserire.

last

estremità di intervallo da inserire.

val

valore da inserire.

where

La posizione del contenitore inserire (suggerimento solo).

Note

la prima funzione membro determina se un elemento X esiste nella sequenza i cui la chiave è ordine equivalente a quello val.In caso contrario, viene creato tale elemento X e viene inizializzato con val.La funzione determina quindi l'iteratore where oggetto che definisce X.Se un inserimento si verifichi, la funzione restituisce std::pair(where, true).In caso contrario restituirà std::pair(where, false).

I secondi termine della funzione membro insert(val).firsttramite, where come posizione iniziale all'interno della sequenza controllata da individuare il punto di inserimento.(Inserimento può anche verificarsi leggermente più veloce, se il punto di inserimento immediatamente precedente a o segue where).

La terza funzione membro inserire la sequenza di valori degli elementi, per ognuno where nell'intervallo [first, last), chiamando insert(*where).

Le ultime due funzioni membro si comportano allo stesso modo dei primi due, eccetto val viene utilizzato per costruire il valore immesso.

Se viene generata un'eccezione durante l'inserimento di un singolo elemento, il contenitore resta invariato e l'eccezione viene generata di nuovo.Se viene generata un'eccezione durante l'inserimento di più elementi, il contenitore viene lasciato in uno stabile ma lo stato non specificato e l'eccezione viene generata di nuovo.

Esempio

// std_tr1__unordered_map__unordered_map_insert.cpp 
// compile with: /EHsc 
#include <unordered_map> 
#include <iostream> 
#include <string>
 
typedef std::unordered_map<char, int> Mymap; 
int main() 
    { 
    Mymap c1; 
 
    c1.insert(Mymap::value_type('a', 1)); 
    c1.insert(Mymap::value_type('b', 2)); 
    c1.insert(Mymap::value_type('c', 3)); 
 
// display contents " [c 3] [b 2] [a 1]" 
    for (Mymap::const_iterator it = c1.begin(); 
        it != c1.end(); ++it) 
        std::cout << " [" << it->first << ", " << it->second << "]"; 
    std::cout << std::endl; 
 
// insert with hint and reinspect 
    Mymap::iterator it2 = c1.insert(c1.begin(), Mymap::value_type('d', 4)); 
    for (Mymap::const_iterator it = c1.begin(); 
        it != c1.end(); ++it) 
        std::cout << " [" << it->first << ", " << it->second << "]"; 
    std::cout << std::endl; 
 
// insert range and inspect 
    Mymap c2; 
 
    c2.insert(c1.begin(), c1.end()); 
    for (Mymap::const_iterator it = c2.begin(); 
        it != c2.end(); ++it) 
        std::cout << " [" << it->first << ", " << it->second << "]"; 
    std::cout << std::endl; 
 
// insert with checking and reinspect 
    std::pair<Mymap::iterator, bool> pib = 
        c1.insert(Mymap::value_type('e', 5)); 
    std::cout << "insert(['a', 5]) success == " 
        << std::boolalpha << pib.second << std::endl; 
    pib = c1.insert(Mymap::value_type('a', 6)); 
    std::cout << "insert(['a', 5]) success == " 
        << std::boolalpha << pib.second << std::endl; 
    for (Mymap::const_iterator it = c1.begin(); 
        it != c1.end(); ++it) 
        std::cout << " [" << it->first << ", " << it->second << "]"; 
    std::cout << std::endl; 

// The templatized versions move constructing elements
    unordered_map<int, string> c3, c4;
    pair<int, string> is1(1, "a"), is2(2, "b");

    c3.insert(std::move(is1));
    std::cout << "After the move insertion, c3 contains:" << std::endl
      << " " << c3.begin()->first
      << " => " << c3.begin()->second
      << std::endl;

    c4.insert(c4.begin(), std::move(is2));
    std::cout << "After the move insertion, c4 contains:" << std::endl
      << " " << c4.begin()->first
      << " => " << c4.begin()->second
      << std::endl;
 
    return (0); 
    } 
 
  

Requisiti

intestazione: <unordered_map>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

<unordered_map>

unordered_map Class

Altre risorse

<unordered_map> membri