的unordered_set的值,我想找到unordered_set的值,但沒有成功查找的shared_ptr
typedef std::shared_ptr<int> IntPtr;
std::unordered_set<IntPtr> s;
s.insert(std::make_shared<int>(42));
bool found = s.find(std::make_shared<int>(42)) != s.end();
cout<<std::boolalpha<<found<<endl; // false
曾嘗試以下,但仍然沒有工作。
namespace std {
template <> struct hash<IntPtr> {
size_t operator()(const IntPtr& x) const noexcept {
return std::hash<int>()(*x);
}
};
}
任何想法如何使其工作?
你需要明白它的意思有兩個共享指針是「平等」。 –
你不應該爲**你的**類型專門化'std :: hash' ... – Jarod42
'shared_ptr'比較指針值的比較運算符;不會比較指向的實際對象。 – dasblinkenlight