unordered_set::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_set__unordered_set_insert.cpp
// compile with: /EHsc
#include <unordered_set>
#include <iostream>
#include <string>
typedef std::unordered_set<char> Myset;
int main()
{
Myset c1;
c1.insert('a');
c1.insert('b');
c1.insert('c');
// display contents " [c] [b] [a]"
for (Myset::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << *it << "]";
std::cout << std::endl;
// insert with hint and reinspect
Myset::iterator it2 = c1.insert(c1.begin(), 'd');
for (Myset::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << *it << "]";
std::cout << std::endl;
// insert range and inspect
Myset c2;
c2.insert(c1.begin(), c1.end());
for (Myset::const_iterator it = c2.begin();
it != c2.end(); ++it)
std::cout << " [" << *it << "]";
std::cout << std::endl;
// insert with checking and reinspect
std::pair<Myset::iterator, bool> pib =
c1.insert('e');
std::cout << "insert(['a',]) success == "
<< std::boolalpha << pib.second << std::endl;
pib = c1.insert('a');
std::cout << "insert(['a',]) success == "
<< std::boolalpha << pib.second << std::endl;
for (Myset::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << *it << "]";
std::cout << std::endl;
// The templatized versions move constructing elements
unordered_set<string> c3, c4;
string str1("a"), str2("b");
c3.insert(move(str1));
cout << "After the move insertion, c3 contains: "
<< *c3.begin() << endl;
c4.insert(c4.begin(), move(str2));
cout << "After the move insertion, c4 contains: "
<< *c4.begin() << endl;
return (0);
}
Requisitos
encabezado: <unordered_set>
espacio de nombres: std