请考虑以下代码
#include <boost/unordered_set.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
int main()
{
boost::unordered_set<int> s;
s.insert(5);
s.insert(5);
// s.size() == 1
boost::unordered_set<boost::shared_ptr<int> > s2;
s2.insert(boost::make_shared<int>(5));
s2.insert(boost::make_shared<int>(5));
// s2.size() == 2
}
Run Code Online (Sandbox Code Playgroud)
问题是:为什么s2的大小是2而不是1?我很确定它必须与哈希函数有关.我试着看看增强文档,并且没有运气就玩哈希函数.
想法?