Программисты больше не нужны!
Нужны ИИ инженеры! Хотите научиться? Вступайте в канал!
292 of 824 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить