set::emplace
Es wird ein Element eingefügt, das vor Ort konstruiert wird (keine Kopieren- oder Verschiebevorgänge werden ausgeführt).
template<class... Args>
pair<iterator, bool> emplace(
Args&&... args
);
Parameter
Parameter |
Beschreibung |
args |
Die Argumente, die zum Erstellen eines in den Satz einzufügenden Elements weitergeleitet werden, es sei denn, es ist bereits ein Element enthalten, dessen Wert gleichwertig sortiert wird. |
Rückgabewert
Ein Paar, dessen boolesche Komponente "True" zurückgibt, wenn eine Einfügung erfolgte und "False", wenn die Zuordnung bereits ein Element enthielt, dessen Wert einen entsprechenden Wert in der Reihenfolge aufweist. Die Iteratorkomponente des Rückgabewertpaars gibt die Adresse zurück, an der ein neues Element eingefügt wurde (die boolesche Komponente ist "True"), oder wenn das Element bereits lokalisiert wurde (die boolesche Komponente ist "False").
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: ";
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;
}
Ausgabe
set modified, now contains 1 elements: (ten)
Emplace failed, element with value "ten" already exists.
The existing element is (ten)
Anforderungen
Header: <set>
Namespace: std