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 nchsten 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 zurck. (public static Elementfunktion) |
[statisch] |
gibt den besonderen Wert des minimalen Intervalls zurck. (public static Elementfunktion) |
[statisch] |
gibt den besonderen Wert des maximalen Intervalls zurck. (public static Elementfunktion) |
| implementiert unres + und unres -. (ffentliche Elementfunktion) | |
| erhht bzw. verringert die Anzahl der Zeitschritte. (ffentliche Elementfunktion) | |
| implementiert die kombinierten Zuweisungsoperator zwischen zwei Intervallen. (ffentliche Elementfunktion) | |
Typen auerhalb 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 auerhalb 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