【问题标题】:Unable to insert() struct into unordered_set无法将()结构插入 unordered_set
【发布时间】:2012-09-18 20:43:30
【问题描述】:

我无法将项目插入我的无序集合。怎么回事?

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 错误 C2678:二进制“==”:未找到采用“const NODE”类型的左侧操作数的运算符(或没有可接受的转换)

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您没有定义比较运算符==,也没有安排对其进行哈希处理。 (还有MAGIC_BUFFER_SIZEchartypedef struct?真的吗?你学的是C++还是C?)

      【讨论】:

      • 第一个代码 sn-p 不是我的代码,而是我作为作业的一部分给出的代码。
      猜你喜欢
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多