C++ 带有公历日期的无序地图
我想将C++ 带有公历日期的无序地图,c++,boost-date-time,boost-unordered,C++,Boost Date Time,Boost Unordered,我想将boost::gregorian::date存储为boost::unordered_map的键,但我无法编译代码,因为它缺少该类的适当哈希函数 一个简单的解决方案是转换成std::string并存储它。我可能希望避免使用这个解决方案,因为使用字符串非常昂贵 我试图找到一些将日期导出为数字的函数,但我只能读取day()函数,我不确定这是否真的合适 也许我可以计算我的日期和参考日期之间的天数 是否有其他更好的方法来存储日期或将日期导出为数字的函数?为其实现哈希函数: namespace boo
boost::gregorian::date
存储为boost::unordered_map
的键,但我无法编译代码,因为它缺少该类的适当哈希函数
day()
函数,我不确定这是否真的合适是否有其他更好的方法来存储日期或将日期导出为数字的函数?为其实现哈希函数:
namespace boost { namespace gregorian {
inline size_t hash_value(date const& date)
{
return boost::hash_value(date.julian_day());
}
} } // boost::gregorian
julian_day
只是julian epoch开始以来的一天索引(不管是什么)。为什么不将它存储在一个普通的映射中呢?当然,出于性能原因。映射是一个二叉树,无序的映射访问是O(1)。您可以从一个提升日期获得julian day,并且有很多方法可以获得字符串表示。这就是你想要的吗?.mm我想把它转换成一个数字而不是一个字符串,因为使用字符串更昂贵。这就是为什么我也提到了朱利安·戴。有没有办法构造boost::gregorian::date from julian_day?我在boost参考中没有看到它。