如此链接所述:
C字符串没有专门化.std :: hash产生指针值的哈希值(内存地址),它不检查任何字符数组的内容.
这意味着使用相同的char*值可以生成不同的哈希码.例如,拥有以下代码:
//MOK and MOV are template arguments
void emit(MOK key, MOV value) {
auto h = hash<MOK>()(key);
cout<<"key="<<key<<" h="<<h<<endl;
...
Run Code Online (Sandbox Code Playgroud)
这是通过emit()在相同key(with MOK=char*)值(但是4个不同的标记/字符串对象)上调用4次产生的输出:
key=hello h=140311481289184
key=hello h=140311414180320
key=hello h=140311414180326
key=hello h=140311481289190
Run Code Online (Sandbox Code Playgroud)
如何获取相同的哈希码char*?我不想使用boost