gpt4 book ai didi

c++ - 与 unordered_map 的自定义散列/等于函数不匹配

转载 作者:行者123 更新时间:2023-11-30 01:20:23 24 4
gpt4 key购买 nike

我有以下代码。

文件Ant.h

class hashing_func {
public:
unsigned long operator()(const Node& key) const {
unsigned long hash;
hash = key.GetId();
return hash;
}
};

class key_equal_fn {
public:
bool operator()(const Node& t1, const Node& t2) const {
return (t1.GetId() == t2.GetId());
}
};

class Ant {
private:
std :: unordered_map <Node*, int, hashing_func, key_equal_fn> nodemap;
};

但是,在编译时,我不断收到错误消息

[Error] no match for call to '(const hashing_func)(Node* const&)'

显然,我的 map 包含 Node*(节点指针)作为键,目前预计

long unsigned int hashing_func :: operator() ( const Node& const)

我将如何解决这个问题(将散列函数和相等函数转换为接受节点指针)?非常感谢您的帮助。

最佳答案

问题是您的键是Node*,但您的散列和相等比较器是针对const Node&。您需要使用 Node 键,或为 Node* 编写仿函数:

std :: unordered_map <Node, int, hashing_func, key_equal_fn> nodemap;

class hashing_func 
{
public:
unsigned long operator()(const Node* key) const
{
return = key->GetId();
}
};

等等

关于c++ - 与 unordered_map 的自定义散列/等于函数不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19475760/

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