Partager via


set::emplace

Insère un élément construit en place (aucune opération de copie ou de mouvements n'est exécutée).

template<class... Args>
    pair<iterator, bool> emplace(
        Args&&... args
);

Paramètres

Paramètre

Description

args

Les arguments sont transférés pour construire un élément à insérer dans l'ensemble à moins que celui-ci ne contienne déjà un élément dont la valeur est de façon équivalente classée.

Valeur de retour

Un pair dont le composant booléen retourne la valeur true si une insertion a été faite, et false si le mappage contient déjà un élément dont la valeur avait une valeur équivalente dans la commande. Le composant d'itérateur de la paire de valeur de retour retourne l'adresse où un nouvel élément a été inséré (si le composant booléen a la valeur true) ou celle de l'élément déjà localisé (si le composant booléen à la valeur false).

Notes

Aucun itérateur ou référence ne sont invalidés par cette fonction.

Pendant la mise en place, si une exception est levée, l'état du conteneur n'est pas modifié.

Exemple

// set_emplace.cpp
// compile with: /EHsc
#include <set>
#include <string>
#include <iostream>

using namespace std;

template <typename S> void print(const S& s) {
    cout << s.size() << " elements: ";

    for (const auto& p : s) {
        cout << "(" << p << ") ";
    }

    cout << endl;
}

int main()
{
    set<string> s1;

    auto ret = s1.emplace("ten");

    if (!ret.second){
        cout << "Emplace failed, element with value \"ten\" already exists."
            << endl << "  The existing element is (" << *ret.first << ")"
            << endl;
        cout << "set not modified" << endl;
    }
    else{
        cout << "set modified, now contains ";
        print(s1);
    }
    cout << endl;

    ret = s1.emplace("ten");

    if (!ret.second){
        cout << "Emplace failed, element with value \"ten\" already exists."
            << endl << "  The existing element is (" << *ret.first << ")"
            << endl;
    }
    else{
        cout << "set modified, now contains ";
        print(s1);
    }
    cout << endl;
}

Sortie

set modified, now contains 1 elements: (ten)

Emplace failed, element with value "ten" already exists.
  The existing element is (ten)

Configuration requise

En-tête: <jeu>

Espace de noms : std

Voir aussi

Référence

<set>

set, classe

Bibliothèque STL (Standard Template Library)