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

Метод emplace

Метод emplace класса map вставляет новый элемент в контейнер. Главная особенность этого метода заключается в том, что он конструирует элемент непосредственно внутри контейнера, не создавая временный объект pair. Это позволяет избежать лишнего копирования или перемещения. Первым параметром метод принимает ключ, а последующими параметрами - аргументы для конструирования значения. Метод возвращает пару, состоящую из итератора на вставленный (или уже существующий) элемент и логического значения, которое показывает, произошла ли вставка на самом деле.

Синтаксис

m.emplace(key, args...)

Пример

Давайте вставим в словарь map новый элемент с ключом "a" и значением 1, сконструировав его прямо на месте:

#include <iostream> #include <map> using namespace std; int main() { map<string, int> m; auto res = m.emplace("a", 1); cout << res.second << endl; cout << m["a"] << endl; return 0; }

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

1 1

Пример

Если элемент с таким ключом уже существует, метод emplace не станет его перезаписывать. Давайте попробуем вставить элемент с уже существующим ключом:

#include <iostream> #include <map> using namespace std; int main() { map<string, int> m; m.emplace("a", 1); auto res = m.emplace("a", 2); cout << res.second << endl; cout << m["a"] << endl; return 0; }

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

0 1

Пример

Давайте заполним словарь несколькими парами ключ-значение и выведем его содержимое на экран:

#include <iostream> #include <map> using namespace std; int main() { map<string, int> m; m.emplace("a", 1); m.emplace("b", 2); m.emplace("c", 3); for (auto el : m) { cout << el.first << " " << el.second << endl; } return 0; }

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

"a 1" "b 2" "c 3"

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

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