c – 如何实现CString散列函数以与std :: unordered_map一起使用?

我想宣布:

std::unordered_map<CString, CString> m_mapMyMap;

但是当我构建时,我收到一个错误,告诉我标准C不为CString提供哈希函数,而CString有(LPCSTR)运算符.

如何正确实现CString的哈希函数?

std :: unordered_map使用std :: hash<>不使用(LPCSTR)运算符.

您需要重新定义哈希函数:

template<class T> class MyHash;

template<>
class MyHash<CString> {
public:
    size_t operator()(const CString &s) const
    {
        return std::hash<std::string>()( (LPCSTR)s );
    }
};

std::unordered_map<CString,CString,MyHash> m_mapMyMap;

但为了更好的性能,使用std :: string而不是CString作为密钥.

https://stackoverflow.com/questions/35408362/how-do-i-implement-a-cstring-hash-function-for-use-with-stdunordered-map

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 如何实现CString散列函数以与std :: unordered_map一起使用?