Chrono v C++

je glava C++, ki ponuja zbirko tipov in funkcij za delo s časom. Je del standardne knjižnice predlog C++ (STL) in je vključen v C++11 in novejše različice.

ponuja tri glavne vrste ur: sistemska_ura steady_clock in high_resolution_clock. Te ure se uporabljajo za merjenje časa na različne načine.

system_clock predstavlja sistemsko stensko uro v realnem času. Na to vplivajo časovne prilagoditve sistema.
steady_clock predstavlja monotono naraščajočo uro, na katero spremembe sistemskega časa ne vplivajo.
high_resolution_clock je ura z najkrajšo razpoložljivo tiktakalno dobo v sistemu.

ponuja tudi zbirko vrst trajanja, vključno s trajanjem ki se lahko uporablja za predstavitev trajanja časa. Rep je tip predstavitve (na primer int ali long) in Period je razmerje med trajanjem (na primer nanosekunde ali sekunde).
Dodatno ponuja zbirko vrst časovnih točk, vključno s time_point ki se lahko uporabijo za predstavitev točke v času. Ura je vrsta ure (na primer sistemska_ura) in Trajanje je vrsta trajanja (na primer sekunde).

Knjižnica Chrono se uporablja za obravnavo datuma in ure. Ta knjižnica je bila zasnovana tako, da obravnava dejstvo, da so lahko časovniki in ure različni v različnih sistemih, in se tako sčasoma izboljša v smislu natančnosti. Edinstvena stvar pri Chronu je, da zagotavlja a natančno nevtralen koncept z ločevanjem trajanja in časovne točke (časovne točke) od določenih ur. chrono je ime glave in tudi podimenskega prostora: vsi elementi v tej glavi (razen specializacij common_type) niso definirani neposredno pod imenskim prostorom std (kot večina standardne knjižnice), ampak pod std::chrono imenski prostor . Elementi v tem naslovu obravnavajo čas. To se izvaja predvsem s pomočjo treh konceptov:

Trajanje

Predmet trajanja izraža časovni razpon s štetjem, kot je minuta, dve uri ali deset milisekund. Na primer, "42 sekund" je lahko predstavljeno s trajanjem, ki je sestavljeno iz 42 odmikov časovne enote 1 sekunde. 

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  ;   }   

Izhod:

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

Ura

Ura je sestavljena iz začetne točke (ali obdobja) in hitrosti. Na primer, ura ima lahko epoho 22. februarja 1996 in tiktaka vsako sekundo. C++ definira tri vrste taktov:

    sistemska_ura -Je trenutni čas glede na sistem (običajna ura, ki jo vidimo v orodni vrstici računalnika). Zapisano je kot- std::chrono::system_clock stalna_ura - To je monotona ura, ki se nikoli ne bo prilagodila. Deluje enakomerno. Zapisano je kot- std::chrono::steady_clock ura_visoke_ločljivosti - Zagotavlja najmanjšo možno časovno obdobje. Zapisano je kot-std::chrono::high_resolution_clock

Časovna točka

Objekt time_point izraža točko v času glede na epoho ure. Interno objekt shrani objekt tipa trajanja in uporablja tip Ura kot referenco za svojo epoho.  

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  ;;   }   

Izhod:

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

Pomembno je omeniti, da sta natančnost in točnost ur in trajanja, ki jih zagotavlja se lahko razlikujejo glede na sistem in platformo in vedno je dobro, da za več informacij preverite dokumentacijo svoje platforme.

Ustvari kviz