gpt4 book ai didi

c++ - hash_set 中不能包含用户定义的类

转载 作者:行者123 更新时间:2023-11-28 07:35:40 28 4
gpt4 key购买 nike

我正在实现六度 Kevin Bacon 问题并为 Actor 节点编写一个类。我可以使用 set 而不是 hash_set 容器来保存用户定义的类。为什么?错误信息显示:error C2440: 'type cast' : cannot convert from 'const ActorGraphNode' to 'size_t'1> 没有可用的可以执行此转换的用户定义转换运算符,或者无法调用该运算符....

#include <hash_set>
#include <set>
class ActorGraphNode{
public:
string ActorName;
//hash_set<ActorGraphNode> linkedActors;
set<ActorGraphNode> linkedActors;
ActorGraphNode(string name):ActorName(name){}
void linkCostar(ActorGraphNode actor){
linkedActors.insert(actor);
actor.linkedActors.insert(*this);
}
bool operator<( const ActorGraphNode& a ) const
{ return ActorName < a.ActorName ? true : false;}
};

最佳答案

不出所料,hash_set 要求您为您的类型实现哈希函数。

class ActorGraphNode{
public:
string ActorName;
hash_set<ActorGraphNode> linkedActors;
//set<ActorGraphNode> linkedActors;
ActorGraphNode(string name):ActorName(name){}
void linkCostar(ActorGraphNode actor){
linkedActors.insert(actor);
actor.linkedActors.insert(*this);
}
bool operator<( const ActorGraphNode& a ) const
{ return ActorName < a.ActorName;}
bool operator ==( const ActorGraphNode& a ) const
{ return ActorName == a.ActorName;}
operator size_t() const
{
return hash<string>()(ActorName);
}
};

关于c++ - hash_set 中不能包含用户定义的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16823900/

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