gpt4 book ai didi

c++ - 如何在 C++ 中使用 std::vector 作为 std::unordered_map 的键类型?

转载 作者:太空狗 更新时间:2023-10-29 19:57:07 25 4
gpt4 key购买 nike

我正在尝试构建一个 unordered map包含 n 维的点 空间。我明白 std::vector满足成为 std::map 中的关键的所有要求,但此代码无法编译。我收到一长串错误消息,但这似乎是最有问题的:

error: no match for call to ‘(const std::hash<std::vector<int> >) (const std::vector<int>&)'.

有没有人知道为什么 g++ 似乎不认为 std::vector<int>是可散列的吗?

#include <vector>
#include <unordered_map>
#include <boost/functional/hash.hpp>

using namespace std;

typedef vector<int> point;

int main()
{
unordered_map<point, int>jugSpace;
vector<int> origin(3, 0);

jugSpace.insert( pair<point,int>(origin, 0) );
}

最佳答案

无序映射需要键的哈希函数的可用性。 std::vector 在标准实现中不存在这样的函数。

不过,您可以使用 std::map - 它需要比较运算符,它存在于 vector 中。

如果你真的必须使用 vector 作为 HashMap 的键(这看起来很可疑),你应该自己实现哈希函数。

关于c++ - 如何在 C++ 中使用 std::vector 作为 std::unordered_map 的键类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41103505/

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