Присваивание значений одного ключа к другому в контейнере map

https://pastebin.com/UbQmXvsE

У меня есть map<string, set<CarModel>, less <>>> database. Это словарь, содержащий в качестве ключа название компании, а в качестве значения - CarModel, это соответственно класс. Я хочу реализовать операцию Change oldCompanyName newCompanyName. Она изменяет название компании со старого на новое и удаляет из базы старое название компании. Но я хочу, чтобы к новому названию компании переносились ещё и её значения, то есть:

Ferrari : ModelA, ModelB

Change Ferrari Nissan

Nissan : ModelA, ModelB

Как можно реализовать передачу значений от одного ключа к другому?


Ответы (1 шт):

Автор решения: Глеб Труфанов

Не нужно ничего там запоминать и удалять, достаточно (если я тебя правильно понял, тебе просто нужно поменять ключ на другой, и чтобы данные в нём моделей машин остались прежними) просто поменять ключ. С с++ 17 это делается с помощью метода extract.

Условно говоря, псевдокод будет примерно такой:

auto node = database.extract("Ferrari");
node.key() = "Nissan";
database.insert(move(node));
→ Ссылка