set::emplace_hint
Vloží prvek vyrobeno na místě (jsou prováděny žádné operace kopírování nebo přesun), naznačuje umístění.
template<class... Args>
iterator emplace_hint(
const_iterator where,
Args&&... args);
Parametry
Parametr |
Popis |
args |
Argumenty předané vytvořit prvek, který chcete vložit do sady Pokud sada již obsahuje tento prvek nebo, obecněji, pokud jej již obsahuje prvek, jehož hodnota je ekvivalentně objednané. |
where |
Místo zahájení vyhledání správného bodu vložení. (Je-li bezprostředně předchází tomuto bodu where, vložení může dojít včas amortizovaný stálé místo logaritmické času.) |
Vrácená hodnota
Iterace nově vloženého prvku.
Pokud vložení se nezdařilo, protože prvek již existuje, vrátí iterace existujícího elementu.
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: " << 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;
}
Výsledek
set starting data: 3 elements:
(Anna) (Bob) (Carmine)
set modified, now contains 4 elements:
(Anna) (Bob) (Carmine) (Doug)
Požadavky
Hlavička: <set>
Obor názvů: std