set::emplace_hint
Wstawia element skonstruowany w miejscu (bez wykonania żadnej czynności kopiowania ani przenoszenia) ze wskazówką położenia.
template<class... Args>
iterator emplace_hint(
const_iterator where,
Args&&... args);
Parametry
Parametr |
Opis |
args |
Argumenty przekazywane do konstruowania elementu do wstawienia do zestawu, chyba że zestaw zawiera już ten element lub, bardziej ogólnie, chyba że już zawiera element, którego wartość jest równoważnie uporządkowana. |
where |
Miejsce, w którym należy rozpocząć wyszukiwanie poprawnego punktu wstawiania. (Jeśli ten punkt bezpośrednio poprzedza where, wstawianie może wystąpić w stałym, amortyzowanym czasie zamiast czasu logarytmicznego.) |
Wartość zwracana
Iterator do nowo wstawionego elementu.
Jeśli wstawianie się nie powiodło, ponieważ element już istnieje, zwraca iterator do istniejącego elementu.
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: " << 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;
}
Dane wyjściowe
set starting data: 3 elements:
(Anna) (Bob) (Carmine)
set modified, now contains 4 elements:
(Anna) (Bob) (Carmine) (Doug)
Wymagania
Nagłówek: <set>
Przestrzeń nazw: std