带有格里高利日期的unordered_map

时间:2014-06-06 14:37:07

标签: c++ boost-date-time boost-unordered

我想将boost::gregorian::date存储为boost::unordered_map的键,但我无法编译代码,因为它缺少此类的正确哈希函数。

  1. 一个简单的解决方案是转换为std::string并存储它。我可能想避免这种解决方案,因为使用字符串非常昂贵。
  2. 我试图找到一些函数将日期导出到数字,但我只能阅读day()函数,我不确定这是否真的合适。
  3. 也许我可以计算出我的日期和参考日期之间的天数?
  4. 还有其他更好的方法来存储日期或将日期导出为数字吗?

1 个答案:

答案 0 :(得分:8)

为它实现哈希函数:

namespace boost { namespace gregorian {

inline size_t hash_value(date const& date)
{
    return boost::hash_value(date.julian_day());
}

} } // boost::gregorian

julian_day只是朱利安时期开始以来的日期指数(无论是什么)。