unordered_map с григорианскими датами
Я хотел бы хранить boost::gregorian::date
как ключ boost::unordered_map
но я не могу скомпилировать код, так как в нем отсутствует правильная хеш-функция для этого класса.
- Простым решением будет преобразование в
std::string
и сохранить его. Я, возможно, хотел бы избежать этого решения, так как использование строки довольно дорого. - Я пытался найти какую-то функцию, экспортирующую дату в число, но я могу прочитать только
day()
функция, и я не уверен, что это действительно подходит. - Может быть, я могу рассчитать количество дней между моей датой и контрольной датой?
Есть ли другой лучший способ сохранить дату или дату экспорта функции в виде числа?
1 ответ
Решение
Реализуйте хеш-функцию для него:
namespace boost { namespace gregorian {
inline size_t hash_value(date const& date)
{
return boost::hash_value(date.julian_day());
}
} } // boost::gregorian
julian_day
это просто индекс дня с начала юлианской эпохи (что бы это ни было).