Присваивание значений одного ключа к другому в контейнере 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));