Chrono C++ nyelven

egy C++ fejléc, amely típusok és függvények gyűjteményét kínálja az idő múlásával történő munkavégzéshez. A C++ Standard Template Library (STL) része, és benne van a C++11 és újabb verziókban.

három fő óratípust biztosít: system_clock steady_clock és high_resolution_clock. Ezeket az órákat különféle módokon használják az idő mérésére.

system_clock a rendszerszintű valós idejű falióra. Ezt a rendszer időbeállításai befolyásolják.
A steady_clock egy monoton növekvő órajel, amelyet nem befolyásolnak a rendszeridő változásai.
A high_resolution_clock a rendszeren elérhető legrövidebb ketygési periódusú óra.

időtartamtípusok gyűjteményét is tartalmazza, beleértve az időtartamot amely használható egy időtartam ábrázolására. A rep az ábrázolás típusa (például int vagy long), a Period pedig az időtartam aránya (például nanoszekundum vagy másodperc).
Továbbá időpont-típusok gyűjteményét nyújtja, beleértve a time_point amely egy időpont ábrázolására használható. Az óra az óra típusa (például system_clock), az időtartam pedig az időtartam típusa (például másodperc).

A Chrono könyvtár a dátum és az idő kezelésére szolgál. Ezt a könyvtárat úgy tervezték, hogy kezelje azt a tényt, hogy az időzítők és az órák eltérőek lehetnek a különböző rendszerekben, és így idővel a pontosság javulása érdekében. A chrono egyedülálló tulajdonsága, hogy a precíziós-semleges koncepció az időtartam és az időpont (időpont) elválasztásával meghatározott óráktól. A chrono egy fejléc és egy al-névtér neve: A fejléc összes eleme (a common_type specializációk kivételével) nem közvetlenül az std névtér alatt van definiálva (mint a legtöbb szabványos könyvtárban), hanem a std::chrono névtér . A fejlécben szereplő elemek az idővel foglalkoznak. Ez főként három fogalom segítségével történik:

Időtartam

Az időtartam objektum egy időintervallumot fejez ki, például egy perc, két óra vagy tíz milliszekundum. Például a „42 másodperc” egy 1 másodperces időegység 42 jelöléséből álló időtartammal is ábrázolható. 

CPP
   // C++ program to illustrate the utility    // function duration::count   #include       #include      int     main     ()   {      using     namespace     std  ::  chrono  ;      // std::chrono::milliseconds is an       // instantiation of std::chrono::duration:- 1 second      milliseconds     mil  (  1000  );             mil     =     mil  *  60  ;          std  ::  cout     &  lt  ;  &  lt  ;     &  quot  ;  duration     (  in     periods  )  :     &  quot  ;;      std  ::  cout     &  lt  ;  &  lt  ;     mil  .  count  ()     &  lt  ;  &  lt  ;     &  quot  ;     milliseconds  .    n  &  quot  ;;          std  ::  cout     &  lt  ;  &  lt  ;     &  quot  ;  duration     (  in     seconds  )  :     &  quot  ;;      std  ::  cout     &  lt  ;  &  lt  ;     (  mil  .  count  ()     *     milliseconds  ::  period  ::  num     /         milliseconds  ::  period  ::  den  );      std  ::  cout     &  lt  ;  &  lt  ;     &  quot  ;     seconds  .    n  &  quot  ;;      return     0  ;   }   

Kimenet:

duration (in periods): 60000 milliseconds. duration (in seconds): 60 seconds. 

Óra

Az óra egy kezdőpontból (vagy korszakból) és egy ketyegésből áll. Például egy óra korszaka 1996. február 22-e lehet, és másodpercenként ketyeg. A C++ három óratípust határoz meg:

    system_clock - Ez a rendszer szerinti aktuális idő (normál óra, amit a számítógép eszköztárán látunk). A következőképpen van írva: std::chrono::system_clock steady_clock - Ez egy monoton óra, amelyet soha nem lehet beállítani. Egyenletes ütemben megy. A következőképpen van írva: std::chrono::steady_clock high_resolution_clock - A lehető legrövidebb ketyegési periódust biztosítja. Úgy van írva, hogy-std::chrono::high_resolution_clock

Időpont

A time_point objektum egy időpontot fejez ki az óra korszakához képest. Belsőleg az objektum egy időtartam típusú objektumot tárol, és az Óra típust használja referenciaként a korszakához.  

CPP
   // C++ program to illustrate time point   // and system clock functions   #include      #include     #include     // Function to calculate   // Fibonacci series   long     fibonacci  (  unsigned     n  )   {      if     (  n     &  lt  ;     2  )     return     n  ;      return     fibonacci  (  n  -1  )     +     fibonacci  (  n  -2  );   }   int     main  ()   {      // Using time point and system_clock      std  ::  chrono  ::  time_point  &  lt  ;  std  ::  chrono  ::  system_clock  &  gt  ;     start       end  ;      start     =     std  ::  chrono  ::  system_clock  ::  now  ();      std  ::  cout     &  lt  ;  &  lt  ;     &  quot  ;  f  (  42  )     =     &  quot  ;     &  lt  ;  &  lt  ;     fibonacci  (  42  )     &  lt  ;  &  lt  ;     'n'  ;      end     =     std  ::  chrono  ::  system_clock  ::  now  ();      std  ::  chrono  ::  duration  &  lt  ;  double  &  gt  ;     elapsed_seconds     =     end     -     start  ;      std  ::  time_t     end_time     =     std  ::  chrono  ::  system_clock  ::  to_time_t  (  end  );      std  ::  cout     &  lt  ;  &  lt  ;     &  quot  ;  finished     computation     at     &  quot  ;     &  lt  ;  &  lt  ;     std  ::  ctime  (  &  amp  ;  end_time  )      &  lt  ;  &  lt  ;     &  quot  ;  elapsed     time  :     &  quot  ;     &  lt  ;  &  lt  ;     elapsed_seconds  .  count  ()     &  lt  ;  &  lt  ;     &  quot  ;  s    n  &  quot  ;;   }   

Kimenet:

f(42) = 267914296 finished computation at Wed Jan 4 05:13:48 2017 elapsed time: 2.14538s 

Fontos megjegyezni, hogy az órák és időtartamok pontossága és pontossága által biztosított a rendszertől és a platformtól függően változhat, és mindig érdemes megnézni a platform dokumentációját további információkért.

Kvíz létrehozása