std::chrono::duration
| definiert in Header <chrono>
|
||
template< class Rep, class Period = std::ratio<1> > class duration; |
(seit C++11) | |
Das Klassentemplate std::chrono::duration stellt ein Zeitintervall dar.
Es besteht aus einer Anzahl von Zeitschritten vom Typ Rep und einer Zeitschrittweite, wobei diese eine konstante, rational Zeit ist, die die Anzahl an Sekunden angibt, welche von einem Zeitschritt bis zum nächsten Zeitschritt vergeht.
In einem Zeitintervall duration wird nur die Anzahl der Zeitschritte gespeichert. Dabei ist die Anzahl vom Typ Rep. Falls Rep eine Gleitkommazahl ist, kann das Zeitintervall Bruchteile der Zeitschrittweite darstellen. Die Zeitschrittweite Period ist ein Teil des Typs des Zeitintervalls und wird nur verwendet, um verschiedene Zeitintervallen ineinander zu konvertieren.
Klassentypen
| Klassentyp | Definition |
Rep
|
Rep ist ein arithmetischer Zahlentyp, um die Anzahl an Zeitschritten zu speichern.
|
Period
|
Period, ein std::ratio, welches die Zeitschrittweite, d.h. die Anzahl Sekunden pro Zeitschritt, darstellt.
|
Klassenmethoden
| erzeugt neues Intervall. (öffentliche Elementfunktion) | |
| weist Inhalte zu. (öffentliche Elementfunktion) | |
| gibt die Anzahl der Zeitschritte an. (öffentliche Elementfunktion) | |
[statisch] |
gibt den besonderen Wert des Nullintervalls zurück. (public static Elementfunktion) |
[statisch] |
gibt den besonderen Wert des minimalen Intervalls zurück. (public static Elementfunktion) |
[statisch] |
gibt den besonderen Wert des maximalen Intervalls zurück. (public static Elementfunktion) |
| implementiert unäres + und unäres -. (öffentliche Elementfunktion) | |
| erhöht bzw. verringert die Anzahl der Zeitschritte. (öffentliche Elementfunktion) | |
| implementiert die kombinierten Zuweisungsoperator zwischen zwei Intervallen. (öffentliche Elementfunktion) | |
Typen außerhalb der Klasse
| Typ | Definition |
| std::chrono::nanoseconds | Zeitintervall mit Zeitschrittweite in ns (std::nano) |
| std::chrono::microseconds | Zeitintervall mit Zeitschrittweite in us (std::micro) |
| std::chrono::milliseconds | Zeitintervall mit Zeitschrittweite in ms (std::milli) |
| std::chrono::seconds | Zeitintervall mit Zeitschrittweite in s (std::ratio<1>)
|
| std::chrono::minutes | Zeitintervall mit Zeitschrittweite in min (std::ratio<60>)
|
| std::chrono::hours | Zeitintervall mit Zeitschrittweite in h (std::ratio<3600>)
|
Funktionen außerhalb der Klasse
| spezialisiert die Traitsklasse std::common_type. (class Template-Spezialisierung) | |
| implementiert arithmetische Operationen mit Zeitintervallen als Argumente. (Funktions-Template) | |
| vergleicht zwei Zeitintervalle. (Funktions-Template) | |
| wandelt ein Zeitintervall in ein anderes Zeitintervall mit einer anderen Zeitschrittweite um. (Funktions-Template) | |
Hilfsklassen
| zeigt an, ob ein Zeitintervall in ein anderes Intervall mit verschiedener Zeitschrittweite konvertiert werden kann (Klassen-Template) | |
| erzeugt Null-, Minimum- und Maximumwerte eines Zeitschrittewertes vom gegebenen Typ (Klassen-Template) | |
Beispiel
Diese Beispiel zeigt, wie man verschiedene eigene Zeitintervalle definieren und zwischen ihnen hin- und herkonvertieren kann:
#include <iostream>
#include <chrono>
int main()
{
typedef std::chrono::duration<int, std::ratio<1, 100000000>> shakes;
typedef std::chrono::duration<int, std::centi> jiffies;
typedef std::chrono::duration<float, std::ratio<12096,10000>> microfortnights;
typedef std::chrono::duration<float, std::ratio<3155,1000>> nanocenturies;
std::chrono::seconds sec(1);
std::cout << "1 second is:\n";
std::cout << std::chrono::duration_cast<shakes>(sec).count()
<< " shakes\n";
std::cout << std::chrono::duration_cast<jiffies>(sec).count()
<< " jiffies\n";
std::cout << std::chrono::duration_cast<microfortnights>(sec).count()
<< " microfortnights\n";
std::cout << std::chrono::duration_cast<nanocenturies>(sec).count()
<< " nanocenturies\n";
}
Output:
1 second is:
100000000 shakes
100 jiffies
0.82672 microfortnights
0.316957 nanocenturies