【发布时间】:2013-04-09 07:13:38
【问题描述】:
为什么 C++ 标准不指定 std::hash<T> 专用于 char*、const char*、unsigned char*、const unsigned char* 等?即,它将散列 C 字符串的内容,直到找到终止的 null。
将我自己的专业化注入我自己的代码的std 命名空间有什么害处吗?
【问题讨论】:
-
我会说
char*和unsigned char*在散列的上下文中是不安全的,其他带有const限定符的都可以。不要注入std::,只需在你的命名空间中进行特化。 -
您的
std::hash存储的const char*的生命周期是多少? (std::hash存储它的键值以及散列它们)。你如何区分以空结尾的const char*和指向单个字符的指针? -
std::hash只是一个函子对象。它散列了它的论点。它不存储它。 -
完全有效的问题和答案由事实和参考文献支持。投票重新开放。
-
相关:std::hash value on char* value and not on memory address? - 即如果您想知道如何实际散列 C 字符串然后...