Введение в узлы словаря в C++
Отдельный узел на запись держат std::map и std::set: каждая запись в отдельном узле дерева поиска.
Узел можно отцепить от одного контейнера и
перенести в другой без копирования ключа и
значения. Для словаря тип узла связан с
std::map::node_type; у множества -
с std::set::node_type. Подключите
#include <map> или #include <set>.
Метод extract по ключу вырывает узел:
пара исчезает из исходного словаря, а
результат хранит ключ и значение до вставки
куда-то еще. Запишем словарь, извлечем узел
и проверим, что ключа больше нет:
#include <map>
std::map<std::string, int> ages = {{"Ann", 27}, {"Bob", 31}};
auto node = ages.extract("Ann");
std::cout << node.key() << " " << node.mapped() << "\n";
std::cout << ages.count("Ann") << "\n";
На экран попадает имя и число из узла, а
вторая строка печатает 0: словарь
ages уже не содержит ключ
"Ann".