【发布时间】:2020-11-02 06:40:20
【问题描述】:
似乎当我尝试定义一个 unordered_set 向量时,我收到一条错误消息:“调用 unordered_set< vector<int> > 的隐式删除的默认构造函数。”当我定义一个常规(有序)集时,这不会发生:set< vector<int> >。看来我需要定义hash<vector<int>> 才能消除错误。
有谁知道为什么我只有在使用unordered_set 时才会收到此错误?两种数据结构都不应该使用散列,那么为什么 unordered_set 需要自定义的散列函数呢?事实上,一个常规的(有序的)set 不应该也需要一些自定义的比较器来订购vector<int> 数据结构吗?
【问题讨论】:
-
std::vector已经有一个重载的operator <。这就是它与std::set一起使用的原因。 -
std::set不使用散列。
标签: c++ hash set unordered-set