我尝试创建以下unordered_map:
我为CString提供了哈希函数,但编译器仍然返回错误:
std::unordered_map<CString, CString, std::function<size_t(const CString &data)>> usetResponse(100, [](const CString &data)
{
return std::hash<std::string>()((LPCSTR)data);
});
我为CString提供了哈希函数,但编译器仍然返回错误:
error C2338: The C++ Standard doesn't provide a hash for this type.
error C2664: 'std::unordered_map<CString,CString,std::hash<_Kty>,std::equal_to<_Kty>,std::allocator<std::pair<const
_Kty,_Ty>>>::unordered_map(std::initializer_list<std::pair<const _Kty,_Ty>>,unsigned int,const std::hash<_Kty> &,const _Keyeq &,const std::allocator<std::pair<const _Kty,_Ty>> &)' : cannot convert argument 1 from 'std::unordered_map<CString,CString,std::function<size_t (const CString &)>,std::equal_to<_Kty>,std::allocator<std::pair<const
_Kty,_Ty>>>' to 'const std::unordered_map<CString,CString,std::hash<_Kty>,std::equal_to<_Kty>,std::allocator<std::pair<const
_Kty,_Ty>>> &'
请告诉我我做错了什么?
unordered_map
类型的实例传递给使用标准unordered_map
类型的函数参数。模板参数是类类型的一部分,因此您不能混合使用不同模板参数的类型。您需要编写std :: hash <CString>
的专门化,而不是使用自定义哈希作为模板参数。 - Remy Lebeau