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