C2064 项不会计算为接受1个参数的函数(unordered_set)

在实现A*算法时遇到unordered_set报错C2064和C2056,排查后发现是pair<int,int>作为key时需自定义哈希函数。改为使用unordered_set<Node*>,利用结构体中的pair信息,问题得到解决,证明指针在某些情况下更适用。
摘要由CSDN通过智能技术生成

今天手撕A*算法的时候,遇见了以下报错:

 三个错误全部指向这里:

 经过我的具体排查,问题出现在这两个unordered_set中:

 在出现了C2064和C2056报错后,我检索到以下相关内容,但是经过我的排查,和本问题不符合:

编译器错误 C2064 | Microsoft Learn​​​​​​

接着,我尝试从unordered_set的角度去思考问题,意识到如果key的类型设置为 pair<int, int>时,需要自己写哈希函数,否则无法用默认的哈希函数去完成哈希计算。

这里是我在网上检索到的相关unordered_set中使用pair作为键值的方法。

在c++11 的unordered_set和unordered_map中插入pair或tuple作为键值_c++set插入pair_pineappleKID的博客-CSDN博客d

 我这里考虑另一种方式,因为我写的是A*算法,已经定义了Node的结构体,这个结构体中包括了要用pair<int,int>表示的位置信息,我直接改用unordered_set<Node *>。嘿嘿,解决啦,跑通啦,还是指针好用!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值