似乎当我尝试定义一个 unordered_set 向量时,我收到一条错误消息:“调用 unordered_set< vector<int> >
的隐式删除的默认构造函数。”当我定义一个常规(有序)集时,这不会发生: set< vector<int> >
。似乎我需要定义 hash<vector<int>>
以消除错误。
有谁知道为什么我只有在使用 unordered_set
时才会收到此错误?两种数据结构都不应该使用散列,那么为什么 unordered_set 需要自定义的散列函数呢?实际上,不应该常规(有序) set
还需要一些自定义比较器才能订购 vector<int>
数据结构吗?
原文由 vincenzo 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是因为 unordered_set 使用 std::hash 模板来计算其条目的哈希值,并且没有 std::hash 对。您必须定义自定义哈希才能使用 unordered_set。
然后将您的 unordered_set 声明为-
这个散列函数不好。这只是一个例子。