我想知道计算哈希的最佳方法是什么,考虑到ptime
用作键的值主要在小时和日期上有所不同(分钟和秒通常为 0)。
我已经这样做了,但我觉得它很丑陋而且很慢:
namespace std
{
/**
* Specialize std::hash for ptime
*/
template<>
class hash<boost::posix_time::ptime>
{
public:
size_t operator()(const boost::posix_time::ptime& t) const
{
const auto dt = t.date();
const auto ho = t.time_of_day().hours();
return hash<int>()(dt.day_number()) ^ hash<int>()(ho);
}
};
}