unordered_map с григорианскими датами

Я хотел бы хранить boost::gregorian::date как ключ boost::unordered_map но я не могу скомпилировать код, так как в нем отсутствует правильная хеш-функция для этого класса.

  1. Простым решением будет преобразование в std::string и сохранить его. Я, возможно, хотел бы избежать этого решения, так как использование строки довольно дорого.
  2. Я пытался найти какую-то функцию, экспортирующую дату в число, но я могу прочитать только day() функция, и я не уверен, что это действительно подходит.
  3. Может быть, я могу рассчитать количество дней между моей датой и контрольной датой?

Есть ли другой лучший способ сохранить дату или дату экспорта функции в виде числа?

5

Решение

Реализуйте хеш-функцию для него:

namespace boost { namespace gregorian {

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

} } // boost::gregorian

julian_day просто индекс дня с начала юлианской эпохи (что бы это ни было).

8

Другие решения


По вопросам рекламы [email protected]