c++ - 无法将 insert() 结构插入 unordered_set

标签 c++ visual-c++ c++11 std

我无法将项目插入到我的无序集中。这是怎么回事?

typedef struct node_t
{
    char s[SIZE];
    char blank;     //position of blank tile
    char g,h;
    int depth;      //Depth of node for IDA*
}NODE;

...

NODE CurrentNode;
unordered_set<NODE> seen;

seen.insert(CurrentNode);

抛出以下错误:

错误 3 error C2678:二进制“==”:未找到采用“const NODE”类型的左侧操作数的运算符(或没有可接受的转换)

最佳答案

编译器告诉您发生了什么:unordered_set 的实现要求您为NODE 定义一个operator==()。顺便说一句:您还必须定义一个 hash() 函数。

关于c++ - 无法将 insert() 结构插入 unordered_set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12484709/

相关文章:

c++ - 如何判断两个key是否有相同的前缀?

c++ - 如果您在 C++ 中删除()一个元素,迭代器会发生什么情况?

c++ - 如何在两个不同类之间重载 '==' 运算符?

c++ - 调用 placement new 时,将指针强制转换为 "void*"有什么影响吗?

c++ - 引用 VC++ 代码或转换为 DLL?

c++ - 将元素从 map 移动到另一个 map 的有效方法

c++ - 如何按类型从 std::tuple 获取元素

c++ - 从 void* 转换/取消引用成员变量指针,这安全吗?

c++ - priority_queue<> 比较指针?

visual-c++ - 我想崩溃我的 mfc 应用程序