set::emplace
Wstawia element skonstruowany w miejscu (bez wykonania żadnej czynności kopiowania ani przenoszenia).
template<class... Args>
pair<iterator, bool> emplace(
Args&&... args
);
Parametry
Parametr |
Opis |
args |
Argumenty przekazywane, aby skonstruować element wstawiany do unordered_map, chyba że zawiera ona już element, którego wartość jest równoważnie uporządkowana. |
Wartość zwracana
Para, której składnik wartości logicznej zwraca wartość true, jeśli dokonano wstawienia oraz false, jeśli mapa zawiera już element, którego wartość posiada równoważną wartość w kolejności.Składnik iteratora zwracanej pary wartości zwraca adres, w którym wstawiony został nowy element (jeśli składnik wartości logicznej jest true) lub, w którym element jest już zlokalizowany (jeśli składnik wartości logicznej jest false).
Uwagi
Żadne iteratory ani odwołania nie są unieważniane przez tę funkcję.
Podczas umieszczenia, jeśli zgłoszono wyjątek, stan kontenera nie jest modyfikowany.
Przykład
// 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;
}
Dane wyjściowe
set modified, now contains 1 elements: (ten)
Emplace failed, element with value "ten" already exists.
The existing element is (ten)
Wymagania
Nagłówek: <set>
Przestrzeń nazw: std