gpt4 book ai didi

c++ - 将自定义类插入 unordered_map C++

转载 作者:太空狗 更新时间:2023-10-29 23:45:52 24 4
gpt4 key购买 nike

我有一个问题,可能有一个简单的解决方案,但我环顾四周但仍然没有成功。

我有一个简单的类如下:

class Node{
public:
int value;
bool visited;
Node(int argvalue) {value = argvalue;visited = false; }
bool operator==(const Node& n) {return (value == n.value);}
};

class MyHash {
size_t operator()(const Node& x) const { return std::hash<int>()(x.value); }
};

现在当我尝试插入时出现错误并且不明白为什么?我是否错误地实现了哈希函数,或者等于运算符 == 不够用?

unordered_map<Node, int, MyHash> my_items;
my_items.insert(Node(33), 894);

最佳答案

没有two-parameter insert methods火柴insert(key_type, mapped_type) ,这就是您正在尝试的。

map 包含std::pair<const Key, T> ,因此您需要显式插入一对:

my_items.insert(std::make_pair(Node(33), 894));

或者使用大括号初始化:

my_items.insert({Node(33), 894});

您可以使用 std::unordered_map::emplace成员函数,它允许您传递一对构造函数参数:

my_items.emplace(Node(33), 894);

其他:

  • bool Node::operator==应该是常量(比较不应该改变被比较的对象)
  • size_t MyHash::operator()(...) const应该公开。

关于c++ - 将自定义类插入 unordered_map C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15426386/

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