相关疑难解决方法(0)

char*值的std :: hash值而不是内存地址?

如此链接所述:

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

c++ hash c++11

7
推荐指数
4
解决办法
8257
查看次数

标签 统计

c++ ×1

c++11 ×1

hash ×1