set::emplace
Vloží prvek vyrobeno na místě (jsou prováděny žádné operace kopírování nebo přesun).
template<class... Args>
pair<iterator, bool> emplace(
Args&&... args
);
Parametry
Parametr |
Popis |
args |
Argumenty předané vytvořit prvek, který chcete vložit do sady již neobsahuje element, jehož hodnota je ekvivalentně objednané. |
Vrácená hodnota
A pár jehož komponenty bool vrací true, pokud byla vytvořena vložení a false Pokud mapy již obsahuje prvek, jehož hodnota byla ekvivalentní hodnota v pořadí.Součásti iterace vrácená hodnota dvojice vrátí adresu, kde byl vložen nový prvek, (Pokud je součástí bool true) nebo kde prvek již byl umístěn (je-li součást logická hodnota je false).
Poznámky
Touto funkcí nejsou zneplatněny žádné iterátory nebo odkazy.
Pokud je během umístění vyvolána výjimka, není stav kontejneru změněn.
Příklad
// 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;
}
Výsledek
set modified, now contains 1 elements: (ten)
Emplace failed, element with value "ten" already exists.
The existing element is (ten)
Požadavky
Hlavička: <set>
Obor názvů: std