Chrono库用于处理日期和时间。该库旨在处理不同系统上的计时器和时钟可能不同的事实,从而随着时间的推移提高精度。chrono的独特之处在于它提供了 通过将持续时间和时间点(“时间点”)与特定时钟分离,实现精度中性概念。
null
chrono是头的名称,也是子名称空间的名称:这个头中的所有元素(除了常见的_类型专门化)都不是直接在std名称空间(像大多数标准库一样)下定义的,而是在 std::chrono名称空间 . 此标题中的元素处理时间。这主要通过三个概念来实现:
期间
duration对象通过一分钟、两小时或十毫秒等计数来表示时间跨度。例如,“42秒”可以用一个持续时间来表示,该持续时间由1秒时间单位的42个滴答声组成。
// C++ program to illustrate the utility // function duration::count #include <iostream> #include <chrono> 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 << "duration (in periods): " ; std::cout << mil.count() << " milliseconds." ; std::cout << "duration (in seconds): " ; std::cout << (mil.count() * milliseconds::period::num / milliseconds::period::den); std::cout << " seconds." ; return 0; } |
输出:
duration (in periods): 60000 milliseconds. duration (in seconds): 60 seconds.
时钟
时钟由起点(或纪元)和滴答声频率组成。例如,一个时钟的纪元可能是1996年2月22日,并且每秒都在滴答作响。C++定义了三种时钟类型:
- 系统时钟 -它是根据系统的当前时间(我们在计算机工具栏上看到的常规时钟)。它写为-std::chrono::system_clock
- 稳定时钟 -这是一个永远不会调整的单调时钟。它以统一的速率运行。它写为-std::chrono::staid_clock
- 高分辨率时钟 –它提供了尽可能小的滴答周期。它写为std::chrono::高分辨率时钟
时点
time_point对象表示相对于时钟历元的时间点。在内部,对象存储持续时间类型的对象,并使用时钟类型作为其历元的参考。
// C++ program to illustrate time point // and system clock functions #include <iostream> #include <chrono> #include <ctime> // Function to calculate // Fibonacci series long fibonacci(unsigned n) { if (n < 2) return n; return fibonacci(n-1) + fibonacci(n-2); } int main() { // Using time point and system_clock std::chrono::time_point<std::chrono::system_clock> start, end; start = std::chrono::system_clock::now(); std::cout << "f(42) = " << fibonacci(42) << '' ; end = std::chrono::system_clock::now(); std::chrono::duration< double > elapsed_seconds = end - start; std:: time_t end_time = std::chrono::system_clock::to_time_t(end); std::cout << "finished computation at " << std:: ctime (&end_time) << "elapsed time: " << elapsed_seconds.count() << "s" ; } |
输出:
f(42) = 267914296 finished computation at Wed Jan 4 05:13:48 2017 elapsed time: 2.14538s
本文由 沙姆巴维·辛格 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END