unordered_set::insert

Ajoute des éléments.

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

Paramètres

Paramètre

Description

InIt

Le type d'itérateur.

ValTy

Le type d'argument sur place de constructeur.

first

Début de la plage à insérer.

last

Fin de la plage à insérer.

val

Valeur à insérer.

where

Où dans le conteneur insérer (indicateur uniquement).

Notes

La première fonction membre détermine si un élément X existe dans la séquence dont la clé a le classement équivalent à celui d' val.Sinon, elle crée un tel élément X et l'initialise avec val.La fonction détermine l'itérateur where qui indique X.Si une insertion s'est produite, la fonction retourne std::pair(where, true).Sinon, il retourne std::pair(where, false).

La deuxième fonction membre retourne insert(val).first, à l'aide de where comme emplacement de démarrage dans l'ordre d'exécution des instructions pour rechercher le point d'insertion.(L'implémentation peut éventuellement se produire en un peu plus rapidement, si le point d'insertion immédiatement précède ou suit where.)

La troisième fonction membre insère la séquence de valeurs d'élément, pour chaque where dans la plage [first, last), en appelant insert(*where).

Les deux dernières fonctions membres se comportent de la même manière que les deux premiers, sauf qu' val est utilisé pour construire la valeur insérée.

Si une exception est levée lors de l'implémentation d'un élément unique, le conteneur reste inchangé et l'exception est à nouveau levée.Si une exception est levée lors de l'implémentation de plusieurs éléments, le conteneur est laissé dans un état stable mais non spécifié et l'exception est à nouveau levée.

Exemple

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

Configuration requise

en-tête : <unordered_set>

l'espace de noms : DST

Voir aussi

Référence

<unordered_set>

unordered_set Class