代码之家  ›  专栏  ›  技术社区  ›  JustWe

为什么无序集不允许向量作为键?[副本]

  •  0
  • JustWe  · 技术社区  · 6 年前

    例如:

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

    会出错的

    对'(const std::hash>)的调用不匹配(const std::vector&)'无异常(declval()(declval()))>

    1 回复  |  直到 6 年前
        1
  •  1
  •   ShadowRanger    6 年前

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