set::emplace_hint
Fügt ein Element mit einem Platzierungshinweis ein, das vor Ort erstellt wird (Es werden keine Kopier- oder Verschiebevorgänge ausgeführt).
template<class... Args>
iterator emplace_hint(
const_iterator where,
Args&&... args);
Parameter
Parameter |
Beschreibung |
args |
Die zum Erstellen eines in den Satz einzufügenden Elements weitergeleiteten Argumente, es sei denn, der Satz enthält dieses Element bereits, oder üblicher, es sei denn, ein Element, dessen Wert gleichwertig sortiert wird, ist bereits enthalten. |
where |
Die Position, an dem mit der Suche nach dem richtigen Einfügepunkt begonnen wird. (Wenn dieser Punkt where direkt vorausgeht, kann die Einfügung in amortisierter konstanter Zeit anstelle von logarithmischer Zeit eintreten.) |
Rückgabewert
Ein Iterator zum neu eingefügten Element.
Wenn die Einfügung fehlerhaft war, da das Element bereits vorhanden ist, wird ein Iterator an das vorhandene Element zurückgegeben.
Hinweise
Durch diese Funktion werden keine Iteratoren oder Verweise ungültig.
Wird während des Einbaus eine Ausnahme ausgelöst, wird der Zustand des Containers nicht geändert.
Beispiel
// 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;
}
Ausgabe
set starting data: 3 elements:
(Anna) (Bob) (Carmine)
set modified, now contains 4 elements:
(Anna) (Bob) (Carmine) (Doug)
Anforderungen
Header: <set>
Namespace: std