Я хочу удалить один элемент значения ключа из std :: map и сохранить значение, которое хранилось на этой карте.Просто удалить его недостаточно, мне нужен ключ и значение, которое хранилось для других вещей.
Мой пример примерно такой:
std::map<const Class1 *, std::unique_ptr<Class 2>> myMap;
Я хотел бы извлечь ключ изначение из std :: map.Просто убрать его нельзя, так как это приведет к неправильному состоянию std :: map.
Я нашел функцию std :: extract, которую я могу использовать для std :: set, ноне для std :: map.Я не могу найти в Интернете ни одного примера, показывающего, как я могу извлечь ключ и значение из этой карты.
Я хотел бы сделать что-то вроде этого:
auto keyAndValue = myMap.extract(myMap.find(instanceOfClass1));
auto key = keyAndValue.someMethod();
auto value = std::move(keyAndValue.someOtherMethod());
Я думал, что смогу использовать ключ () и value (), как описано в некоторых примерах.Но это не работает, я получаю сообщение об ошибке.
error C2039: 'value': is not a member of
'std::_Node_handle<std::_Tree_node<std::pair<const
_Kty,_Ty>,std::_Default_allocator_traits<_Alloc>::void_pointer>,_Alloc,std::_Node_handle_map_base,_Kty,_Ty>'