【发布时间】:2014-09-15 09:26:22
【问题描述】:
我有一个 C 字符串 (wchar_t const*),它的生命周期由其他数据结构拥有;对字符串的引用通过指针传递。我想将此类实例放入unordered_map。有没有一个标准工具可以用来获取这个哈希值,而无需构造一个临时的std::wstring 并调用std::hash<std::wstring>?
请注意,std::hash<T*> 返回指针的哈希值,而不是该指针指向的字节流内容的哈希值。
【问题讨论】:
-
如果您的库支持它,您可以使用库基础 TS 中的
std::experimental::string_view,它还为string_views 添加哈希。 -
“有没有……?”不,您可以在每个字符上使用
std::hash<wchar_t>,并结合boost::hash_combine或类似名称(例如here),我相信您知道... ;-)。有一些针对 C++14 的散列相关提案会有所帮助,同时没有void*,size_t变体很疯狂,但这就是它的大小。
标签: c++ hash unordered-map unordered-set