std::unordered_map<std::pair<Gdiplus::Color, float>, std::shared_ptr<Gdiplus::Pen>> mymap;
input = std::make_pair(color, width);
Когда я пытаюсь сделатьUnordered.map вопрос вставки с помощью клавиш пары
mymap.insert(std::make_pair(color,width), pen);
Я получаю C2664: «станд :: _ List_iterator < _Mylist> станд :: _ Hash < _Traits> :: вставить & > (станд :: _ List_const_iterator < _Mylist> _ Valty)»: не удается преобразовать параметр 1 из 'станд :: пары < _Ty1, _Ty2>' на 'станд :: _ List_const_iterator < _Mylist>' 1>
Я попытался сделать
mymap.insert(std::make_pair(input,pen))
, но это также дает мне ошибку. я не понимаю, почему так ввода пара цвета и плавать
Я добавляю весь код, потому что я все еще получаю вопросы
std::unordered_map<std::pair<Gdiplus::Color, float>, std::shared_ptr<Gdiplus::Pen>> mymap;
std::shared_ptr<Gdiplus::Pen> getPen(Gdiplus::Color const & color, float width)
{
std::pair<Gdiplus::Color,float> input;
input = std::make_pair(color, width);
std::unordered_map<std::pair<Gdiplus::Color, float>, std::shared_ptr<Gdiplus::Pen>>::const_iterator got = mymap.find (input);
if (got == mymap.end())
{
auto pen = std::make_shared<Gdiplus::Pen>();
pen->SetColor(color);
pen->SetWidth(width);
//std::pair<Gdiplus::Color,float> input2;
mymap.insert(std::make_pair(input, pen));
return pen;
}
else
{
if (std::shared_ptr<Gdiplus::Pen> m_pen = got->second)
return m_Pen;
}
}
};
error C2440: 'type cast' : cannot convert from 'const std::pair<_Ty1,_Ty2>' to 'size_t' with
[
_Ty1=Gdiplus::Color,
_Ty2=float
]
Что такое 'Gdiplus :: Color'? Это переименование? Если нет, может отсутствовать хэш-функция. Работает ли std :: map? – balki