Здравствуйте, pva, Вы писали:
pva>Привет,
pva>прошу совета знатоков стандарта.
pva>Какой стандарто-безопасный метод изменить ключ объекта в std::map<int, object> с минимальным оверхедом? Что-то типа
pva>nodes.emplace(newKey, nodes.extract(oldKey).second);
А чем вариант из
примера не подходит?
std::map<int, std::string> m{{1, "mango"}, {2, "papaya"}, {3, "guava"}};
auto nh = m.extract(2);
nh.key() = 4;
m.insert(std::move(nh));
// m == {{1, "mango"}, {3, "guava"}, {4, "papaya"}}
Ну или твой вариант будет так выглядить
nodes.emplace(newKey, nodes.extract(oldKey).mapped());