map::emplace_hint
Вставляет элемент построен на месте (отсутствует операции копирования или перемещения), не выполняются с подсказками размещения.
template<class... Args>
iterator emplace_hint(
const_iterator where,
Args&&... args);
Параметры
Параметр |
Описание |
args |
Аргументы переадресованные для построения элемента, который необходимо вставить в сопоставление, если сопоставление уже не содержит этот элемент, или в общем случае, если он еще не содержит элемент ключ которого соответствующе упорядочен. |
where |
Место, чтобы начать поиск нужной точки вставки. (Если эта точка непосредственно предшествующего where, вставка может произойти в амортизированном постоянно времени вместо логарифмического времени). |
Возвращаемое значение
Итератор во вновь изменять элемент.
Если вставка завершился ошибкой, поскольку элемент уже существует, возвращает итератор на существующий элемент со значением ключа.
Заметки
Нет итераторы или ссылки является действительным этой функцией.
Во время emplacement, если исключение, не изменяется состояние контейнера.
value_type элемента пары, так как значение элемента будет приказанными парами с первым компонентом, значение ключа и вторым компонентом, к данным значение элемента.
Пример
// map_emplace.cpp
// compile with: /EHsc
#include <map>
#include <string>
#include <iostream>
using namespace std;
template <typename M> void print(const M& m) {
cout << m.size() << " elements: " << endl;
for (const auto& p : m) {
cout << "(" << p.first << "," << p.second << ") ";
}
cout << endl;
}
int main()
{
map<string, string> m1;
// Emplace some test data
m1.emplace("Anna", "Accounting");
m1.emplace("Bob", "Accounting");
m1.emplace("Carmine", "Engineering");
cout << "map starting data: ";
print(m1);
cout << endl;
// Emplace with hint
// m1.end() should be the "next" element after this emplacement
m1.emplace_hint(m1.end(), "Doug", "Engineering");
cout << "map modified, now contains ";
print(m1);
cout << endl;
}
Output
map starting data: 3 elements:
(Anna,Accounting) (Bob,Accounting) (Carmine,Engineering)
map modified, now contains 4 elements:
(Anna,Accounting) (Bob,Accounting) (Carmine,Engineering) (Doug,Engineering)
Требования
Заголовок:<map>
Пространство имен: std