std::chrono::duration
definiert in Header <chrono>
|
||
template< class Rep, |
(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.
Inhaltsverzeichnis |
[Bearbeiten] 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.
|
[Bearbeiten] 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) |
[Bearbeiten] 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>) |
[Bearbeiten] 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) |
[Bearbeiten] 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) |
[Bearbeiten] 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