为什么unordered_set不允许向量作为键?

时间:2018-09-27 03:03:39

标签: c++ c++11 set std

例如:

vector<int> v = {1, 2, 3};
unordered_set<vector<int>> s;
s.insert(v);

会给出错误

  

不匹配调用'(const std :: hash>)(const   std :: vector&)'noexcept(declval()(declval()))>

1 个答案:

答案 0 :(得分:1)

因为most of the C++ containers don'tvector<bool>似乎有明确的专长,但这是不寻常的情况;通常,它们不为聚合或集合类型提供std::hash重载(可能是因为它们不想锁定适用于任意模板类型的哈希组合算法)。