Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::hash<std::chrono::time_point>

      From cppreference.com
      <cpp‎ |chrono‎ |time point
       
       
      Date and time library
       
       
      Defined in header<chrono>
      template<class Clock,class Duration>
      struct hash<std::chrono::time_point<Clock, Duration>>;
      (since C++26)

      The template specialization ofstd::hash forstd::chrono::time_point allows users to obtain hashes of objects of typestd::chrono::time_point<Clock, Duration>. This specialization isenabled if and only ifstd::hash<Duration> is enabled.

      [edit]Notes

      Feature-test macroValueStdFeature
      __cpp_lib_chrono202306L(C++26)Hashing support forstd::chrono value classes

      Example

      Run this code
      #include <chrono>#include <cstddef>#include <iostream>#include <string>#include <thread>#include <unordered_map> struct my_system_clock:std::chrono::system_clock{using time_point=std::chrono::time_point<my_system_clock>; static time_point now()noexcept{return time_point{std::chrono::system_clock::now().time_since_epoch()};} template<class CharT,class Traits>friendauto operator<<(std::basic_ostream<CharT, Traits>& os,const time_point& tp)-> decltype(os){return os<< std::chrono::system_clock::time_point{tp.time_since_epoch()};}}; using my_system_clock_tp=std::chrono::time_point<my_system_clock>; #if __cpp_lib_chrono < 202306L// custom specialization of std::hash can be injected in namespace stdtemplate<>structstd::hash<my_system_clock_tp>{std::size_t operator()(const my_system_clock_tp& d)constnoexcept{return d.time_since_epoch().count();}};#endif int main(){usingnamespace std::chrono_literals; std::unordered_map<my_system_clock_tp,std::string> log; for(int i{}; i!=4;++i){std::this_thread::sleep_for(100ms);        log[my_system_clock::now()]="event #"+std::to_string(i);} for(autoconst&[time, message]: log)std::cout<<'['<< time<<"], message: "<< message<<'\n';}

      Possible output:

      [2024-03-22 10:47:14.966238436], message: event #3[2024-03-22 10:47:14.866096194], message: event #2[2024-03-22 10:47:14.765965786], message: event #1[2024-03-22 10:47:14.665817365], message: event #0

      [edit]See also

      (C++11)
      hash function object
      (class template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/chrono/time_point/hash&oldid=170606"

      [8]ページ先頭

      ©2009-2025 Movatter.jp