РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
283 of 815 menu

Метод emplace

Метод emplace класса unordered_map вставляет новый элемент в контейнер, конструируя его непосредственно на месте, без создания временного объекта. В отличие от метода insert, который принимает уже готовую пару, emplace принимает аргументы для конструктора элемента и создаёт его прямо внутри контейнера, что может быть эффективнее.

Первым параметром метод принимает ключ элемента. Последующие параметры передаются конструктору значения. Метод возвращает пару, первый элемент которой является итератором на вставленный или уже существующий элемент, а второй - логическим значением, указывающим, была ли вставка успешной.

Синтаксис

umap.emplace(key, args...)

Пример

Давайте вставим элемент в unordered_map с ключом 1 и значением "abcde":

#include <iostream> #include <unordered_map> #include <string> using namespace std; int main() { unordered_map<int, string> umap; auto res = umap.emplace(1, "abcde"); cout << res.first->first << " " << res.first->second << endl; cout << res.second << endl; return 0; }

Результат выполнения кода:

"1 abcde" 1

Пример

Давайте попробуем вставить элемент с уже существующим ключом 1 и посмотрим на результат:

#include <iostream> #include <unordered_map> #include <string> using namespace std; int main() { unordered_map<int, string> umap; umap.emplace(1, "abcde"); auto res = umap.emplace(1, "12345"); cout << res.first->first << " " << res.first->second << endl; cout << res.second << endl; return 0; }

Результат выполнения кода:

"1 abcde" 0

Пример

Давайте вставим несколько элементов и выведем их на экран:

#include <iostream> #include <unordered_map> #include <string> using namespace std; int main() { unordered_map<int, string> umap; umap.emplace(1, "abcde"); umap.emplace(2, "12345"); umap.emplace(3, "abcde"); for (const auto& pair : umap) { cout << pair.first << " " << pair.second << endl; } return 0; }

Результат выполнения кода:

"3 abcde" 2 12345 "1 abcde"

Смотрите также

  • класс unordered_map,
    который представляет собой хеш-таблицу
  • метод insert,
    который вставляет элементы в контейнер
  • метод erase,
    который удаляет элементы из контейнера
  • метод find,
    который ищет элемент по ключу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить