Compartir a través de


unordered_map::insert

agrega elementos.

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

Parámetros

Parámetro

Descripción

InIt

El tipo del iterador.

ValTy

El tipo de contexto del argumento del constructor.

first

Inicio del intervalo que se va a insertar.

last

Final del intervalo que se va a insertar.

val

Valor que se va a insertar.

where

Donde en el contenedor insertar (sugerencia sólo).

Comentarios

La primera función miembro determina si un elemento X existe en la secuencia cuya clave tiene equivalente que dirige el de val.Si no, crea dicho elemento X y se inicializa con val.La función continuación determina el iterador where que señala X.Si una inserción se produjo, la función devuelve std::pair(where, true).De lo contrario, devuelve std::pair(where, false).

La segunda función miembro devuelve insert(val).first, mediante where como punto inicial dentro de la secuencia controlada para buscar el punto de inserción.(Inserción puede aparecer posiblemente algo más rápidamente, si el punto de inserción inmediatamente precede o siga where.)

La tercera función miembro inserta la secuencia de valores de elementos, para cada where en el intervalo [first, last), llamando a insert(*where).

Las dos últimas funciones miembro se comportan igual que los dos primeros, salvo que val se utiliza para construir el valor insertado.

Si se produce una excepción durante la inserción de un único elemento, el contenedor permanece inalterado y la excepción se reinician.Si se produce una excepción durante la inserción de varios elementos, el contenedor se permite en un estable pero su estado no especificada y la excepción se reinician.

Ejemplo

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

Requisitos

encabezado: <unordered_map>

espacio de nombres: std

Vea también

Referencia

<unordered_map>

unordered_map Class

Otros recursos

miembros de <unordered_map>