2015-01-09 9 views
6

Sto imparando la libreria <chrono> e, considerando la classe std::chrono::duration, c'è qualche motivo specifico per basarlo in secondi? Ad esempio una variabile per memorizzare secondi sarebbeperché std :: chrono :: durata in base ai secondi

chrono::duration<int> two_seconds(2); 

e tutti gli altri intervalli di tempo loro richieste, concernenti secondi, come

chrono::duration<int, ratio<60>> two_minutes(2); 
chrono::duration<int, ratio<1, 1000>> two_milliseconds(2); 
chrono::duration<int, ratio<60 * 60 * 24>> two_days(2); 

vi siano motivi di durata di base sui secondi e non in minuti, ore , eccetera.?

+5

secondi sono la base fisica per valori di durata di tempo. Può essere questa la ragione? –

+4

Se fosse stata un'altra unità, avresti fatto la domanda corrispondente? –

+1

Deve essere basato su * qualcosa *, poiché è memorizzato come un valore integrale e un rapporto (di integrali). Cos'altro vorresti suggerire come unità base? Seconds è il più naturale, poiché è l'unità [SI] (http://en.wikipedia.org/wiki/International_System_of_Units#Base_units) per tempo. – leemes

risposta

31

I secondi vengono scelti perché è l'unità di tempo di base sia nel sistema SI che nella scienza nel suo complesso.
Anche gli americani usano secondi e non qualcosa come i microfortunights.

perché questo lasso di tempo di base non è un altro parametro template per la classe di durata

Si tratta, come è possibile fornire typedef s per rapporti, e alcuni sono inclusi nello standard.

#include <chrono> 

std::chrono::duration<int, minutes> two_minutes(2);   // Standard 
std::chrono::duration<int, milliseconds> two_milliseconds(2); // Standard 

Se avete bisogno di più, sono banale aggiungere:

typedef std::ratio<60 * 60 * 24> days; 
typedef std::ratio<756, 625> microfortnights; 

std::chrono::duration<int, days> two_days(2); 
std::chrono::duration<int, microfortnights> two_weeks(1000000); 
+35

"Anche gli americani usano i secondi e non qualcosa come i microfortunights." +1 per quello :) – DarkWanderer

+0

Lo standard include già cose come 'std :: chrono :: milliseconds'. Vedere la sezione "Tipi di supporto" in [questa pagina] (http://en.cppreference.com/w/cpp/chrono/duration). – Steve

+0

@Steve Oops, avrei dovuto controllare e non aver preso la parola di OP per questo. – molbdnilo

Problemi correlati