gpt4 book ai didi

c++ - 具有自定义散列/相等函数的 unordered_map - 函数不会被调用

转载 作者:可可西里 更新时间:2023-11-01 15:38:32 24 4
gpt4 key购买 nike

<分区>

这很奇怪.. 下面的代码(我设法通过 Cassio Neri 编译)编译没有任何错误.. 顺便说一下,hashing_func 和 key_equal_func 都被调用了(couts 没有显示在控制台中)窗口)

#include <iostream>
#include <string>
#include <unordered_map>
#include <algorithm>
#include <functional>

using namespace std;

unsigned long hashing_func(string key)
{
cout << "Hashing called";
unsigned long hash = 0;
for(int i=0; i<key.size(); i++)
{
hash += (71*hash + key[i]) % 5;
}
return hash;
}

template<class T> bool key_equal_fn(T t1, T t2)
{
return t1 == t2;
}

template <> bool key_equal_fn<string>(string t1, string t2)
{
cout << "Equal called";
return !(t1.compare(t2));
}

int main ()
{
unordered_map<string, string>::size_type n = 5;
unordered_map<string, string> mymap(n, (const std::hash<string> &)hashing_func,
(const std::equal_to<string> &)(function<bool(string,string)>(key_equal_fn<string>))) ;

bool case_insensitive = mymap.key_eq()("test","TEST");

mymap["paul"] = "jenna";
mymap["frank"] = "ashley";

if(mymap["paul"] == mymap["frank"])
cout << "equal" << endl;


return 0;
}

我正在使用 MSVC2012,有什么问题可以提示吗?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com