c++ - 为什么 unordered_set 不允许 vector 作为键?

标签 c++ c++11 set std

<分区>

例如:

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

会报错

no match for call to '(const std::hash >) (const std::vector&)' noexcept(declval()(declval()))>

最佳答案

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

关于c++ - 为什么 unordered_set 不允许 vector 作为键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52528794/

相关文章:

c++ - 使用可变参数模板解包参数列表时获取参数索引

c++ - c++11 中的父线程信号

c++ - 如何计算通过 C++ 将文件加载到应用程序的时间?

c++ - 分配数组 - "cannot convert from double* to double[]"

c++ - 任意 double 容器的模板语法是什么?

java - NavigableSet 的方法上限不返回带有比较器的预期元素

求解集合问题的算法

c++ - STL 集上的引用运算符 []

循环/结构中的 C++ 函数

c++11 - CLion 无法解析线程