Re: Перенос объекта в map
От: Igore Россия  
Дата: 03.06.25 06:51
Оценка: 2 (1)
Здравствуйте, 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());
Отредактировано 03.06.2025 7:00 Igore . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.