Информация об изменениях

Сообщение Re: Перенос объекта в map от 03.06.2025 6:51

Изменено 03.06.2025 7:00 Igore

Re: Перенос объекта в map
Здравствуйте, 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"}}
Re: Перенос объекта в map
Здравствуйте, 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());