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

在只有const shared ptr的无序集合中找到一个shared ptr?

  •  8
  • bitmask  · 技术社区  · 6 年前

    我有一个 unordered_set<shared_ptr<T>> us 我想知道一根针 k 是在 us 但是 K 有类型 shared_ptr<T const> 所以 unordered_set<shared_ptr<T>>::find 抱怨它不能改变。

    有办法解决这个问题吗?或者直接提供散列?

    我尝试过 const_cast (感觉很脏)但那并没有切断它。

    1 回复  |  直到 6 年前
        1
  •  10
  •   bitmask    6 年前

    使用 std::const_pointer_cast 是一个可能的解决方案。

    us.find(std::const_pointer_cast<T>(k));
    

    因为你没有修改 k ,可以把警察赶走。