5

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

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

还有其他更好的方法来存储日期或将日期导出为数字的函数吗?

4

1 回答 1

9

为它实现哈希函数:

namespace boost { namespace gregorian {

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

} } // boost::gregorian

julian_day只是自儒略纪元开始以来的日索引(无论是什么)。

于 2014-06-06T15:19:56.270 回答