set::emplace_hint
Insère un élément construit en place (aucune opération de copie ou de mouvements n'est exécutée), avec un indicateur de positionnement.
template<class... Args>
iterator emplace_hint(
const_iterator where,
Args&&... args);
Paramètres
Paramètre |
Description |
args |
Les arguments transférés pour construire un élément à insérer dans l'ensemble à moins que l'ensemble comporte déjà cet élément ou, plus généralement, sauf s'il contient déjà un élément dont la valeur est classée de façon équivalente. |
where |
Emplacement pour commencer la recherche du point d'insertion correct. (Si ce point précède immédiatement where, l'insertion peut se produire dans le temps fixe amorti au lieu du temps logarithmique.) |
Valeur de retour
Un itérateur pour l'élément récemment inséré.
Si l'insertion a échoué car l'élément existe déjà, un itérateur pour l'élément existant est retourné.
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: " << endl;
for (const auto& p : s) {
cout << "(" << p << ") ";
}
cout << endl;
}
int main()
{
set<string> s1;
// Emplace some test data
s1.emplace("Anna");
s1.emplace("Bob");
s1.emplace("Carmine");
cout << "set starting data: ";
print(s1);
cout << endl;
// Emplace with hint
// s1.end() should be the "next" element after this emplacement
s1.emplace_hint(s1.end(), "Doug");
cout << "set modified, now contains ";
print(s1);
cout << endl;
}
Sortie
set starting data: 3 elements:
(Anna) (Bob) (Carmine)
set modified, now contains 4 elements:
(Anna) (Bob) (Carmine) (Doug)
Configuration requise
En-tête: <jeu>
Espace de noms : std