在只有 const shared_ptr 的 unordered_set 中找到一个 shared_ptr?
Find a shared_ptr in an unordered_set with only a const shared_ptr?
我有一个 unordered_set<shared_ptr<T>> us
,我想知道 k
是否在 us
中,但是 k
的类型是 shared_ptr<T const>
,所以 unordered_set<shared_ptr<T>>::find
抱怨无法转换。
有办法解决这个问题吗?也许通过直接提供哈希?
我确实尝试了 const_cast
(感觉很脏),但没有成功。
这里使用 std::const_pointer_cast
是一个可能的解决方案。
us.find(std::const_pointer_cast<T>(k));
由于您没有修改 k
,因此可以丢弃常量。
我有一个 unordered_set<shared_ptr<T>> us
,我想知道 k
是否在 us
中,但是 k
的类型是 shared_ptr<T const>
,所以 unordered_set<shared_ptr<T>>::find
抱怨无法转换。
有办法解决这个问题吗?也许通过直接提供哈希?
我确实尝试了 const_cast
(感觉很脏),但没有成功。
这里使用 std::const_pointer_cast
是一个可能的解决方案。
us.find(std::const_pointer_cast<T>(k));
由于您没有修改 k
,因此可以丢弃常量。