Слияние словарей методом merge в C++
Метод merge забирает узлы из другого контейнера того же типа.
Переносятся только ключи, которых еще нет в
текущем словаре. Если ключ уже занят,
соответствующий узел остается в источнике.
Копирования пар не происходит - меняются
только связи дерева. То же правило действует
для std::set при слиянии множеств.
Запишем два словаря с пересекающимся ключом и выведем размеры после слияния:
#include <map>
std::map<std::string, int> host = {{"x", 1}, {"y", 2}};
std::map<std::string, int> guest = {{"y", 9}, {"z", 3}};
host.merge(guest);
std::cout << host.size() << "\n";
std::cout << guest.size() << "\n";
std::cout << host["y"] << "\n";
Объедините два словаря из трех ключей каждый так, чтобы один общий ключ остался только в приемнике. Выведите число элементов в источнике после операции.