Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带有公历日期的无序地图_C++_Boost Date Time_Boost Unordered - Fatal编程技术网

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
的键,但我无法编译代码,因为它缺少该类的适当哈希函数

  • 一个简单的解决方案是转换成std::string并存储它。我可能希望避免使用这个解决方案,因为使用字符串非常昂贵
  • 我试图找到一些将日期导出为数字的函数,但我只能读取
    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参考中没有看到它。