首页 > 编程语言 >C++ stl chrono 学习笔记

C++ stl chrono 学习笔记

时间:2024-11-17 22:07:21浏览次数:1  
标签:std chrono stl since C++ time durationstd

chrono since C++11 库的参考手册(英文)| cppreference

chrono 库定义了三种(直到c++ 20)五种(从c++ 20开始)主要类型以及实用函数和常用类型:

  • cokcks
  • time points
  • durations
  • calendar dates (since C++20)
  • time zone information (since C++20)

clocks

时钟由起点(或历元)和滴答率组成。例如,时钟的历元可能是1970年1月1日,并且每秒钟滴答一次。c++定义了几种时钟类型:

定义在 头文件中,在 std::chrono 命名空间内
system_clock 挂钟时间来自系统的实时时钟
steady_clock 永远不会被调整的匀速时钟
... 更多时钟类型见: https://en.cppreference.com/w/cpp/chrono

epoch

unix时间戳(Unix timestamp)

UNIX时间戳:Unix时间戳(英文为Unix time, POSIX time 或 Unix timestamp)是从 Epoch(1970年1月1日00:00:00 UTC)开始所经过的秒数,不考虑闰秒。
一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。

参考网址:

unix 时间截 | 百度百科

unix 时间截 | 博客园

chrono since C++11 库的参考手册(英文)| cppreference

time points

时间点(time point)是从某个特定时钟的历元开始的一段时间。

定义在 头文件中,在 std::chrono 命名空间内
time_point
#include <iostream>
#include <chrono>

int main(int argc, char *argv[])
{
    auto start = std::chrono::system_clock::now();
    std::cout << start << std::endl;
    std::cout << start.time_since_epoch() << std::endl;
    std::cout 
            << std::chrono::duration_cast<std::chrono::seconds>(start.time_since_epoch()) 
            << std::endl;
    std::cout 
            << std::chrono::duration_cast<std::chrono::minutes>(start.time_since_epoch())
            << std::endl;
    return 0;
}

输出:

2024-11-17 13:33:22.246335500
1731850402246335500ns
1731850402s
28864173min

duration

持续时间(duration)由一段时间组成,定义为某个时间单位的滴答数。例如,“42秒”可以用一个持续时间表示,该持续时间由1秒时间单位的42个节拍组成。

Type Definition
std::chrono::nanoseconds std::chrono::duration</* int64 */, std::nano>
std::chrono::microseconds std::chrono::duration</* int55 */, std::micro>
std::chrono::milliseconds std::chrono::duration</* int45 */, std::milli>
std::chrono::seconds std::chrono::duration</* int35 */>
std::chrono::minutes std::chrono::duration</* int29 */, std::ratio<60>>
std::chrono::hours std::chrono::duration</* int23 */, std::ratio<3600>>
std::chrono::days (since C++20) std::chrono::duration</* int25 */, std::ratio<86400>>
std::chrono::weeks (since C++20) std::chrono::duration</* int22 */, std::ratio<604800>>
std::chrono::months (since C++20) std::chrono::duration</* int20 */, std::ratio<2629746>>
std::chrono::years (since C++20) std::chrono::duration</* int17 */, std::ratio<31556952>>

标签:std,chrono,stl,since,C++,time,durationstd
From: https://www.cnblogs.com/lin-hui/p/18551255

相关文章

  • C++-练习-88
    题目:下列程序中每个try后面都使用两个catch块,以确保nbad_index异常导致方法label_val()被调用。请修改该程序,在每个try块后面只使用一个catch块,并使用RTTI来确保合适时调用label_val()。test.h#ifndefQUEUE_H_#defineQUEUE_H_#include<iostream>usingnamespacestd;......
  • C++时间复杂度讲解
    它约等于算法中基本操作重复执行的次数(循环或递归的次数)不是行数!!!最多为O(5)!!!用乘号连接(在嵌套循环中),时间复杂度用O()表示。(O()只是符号)如:for(int=1;i<=n*10/8;i++){      for(intj=1;j<=n*10/2;k++){             for(intk=1;k<n*10;k++)......
  • 双非本 大一的蓝桥杯c++组备赛日记----普通人的极限在哪里?
    本文创作灵感:从开学到现在,刷到许许多多的让人热血沸腾、心生向往的视频,大都是MIT精致生活,清北狂人此类的。刷多之后心中躁动,跃跃欲试,可又知自己能力有限,面对神仙般的人物只能望其项背,每日累得吐血,但成效低微,心中茫然不已。又恰逢手贱误删文件,导致重新装了一遍vs。本人之前看的......
  • C++入门基础知识152—【关于C++ 赋值运算符重载】
    成长路上不孤单......
  • C++入门基础知识151—【关于C++ ++ 和 -- 运算符重载】
    成长路上不孤单......
  • c++小游戏5个
    这里给出5个简单的C++小游戏示例:猜数字游戏:计算机生成一个随机数,玩家需要猜出这个数字是多少。提示玩家猜测的数字是高了还是低了,直到猜中为止。#include<iostream>#include<cstdlib>#include<ctime>intmain(){srand(time(0));intsecretNumber=r......
  • c++入门基础(一)
    文章目录一、C++输入和输出C++的第⼀个程序二、命名空间namespace的价值namespace的定义命名空间使用三、C++输入&输出四、缺省参数一、C++输入和输出C++的第⼀个程序C++兼容C语⾔绝⼤多数的语法,所以C语⾔实现的helloworld依旧可以运⾏//test.cpp#include<st......
  • 10.C++面向对象7(友元,匿名对象)
    ⭐本篇重点:友元,内部类,匿名对象⭐本篇代码:c++学习/03.c++类与对象-下篇·橘子真甜/c++-learning-of-yzc-码云-开源中国(gitee.com)目录一.友元1.1友元函数 1.2友元类 二.匿名对象 一.友元友元分为友元函数和友元类,它可以帮助我们突破封装的限制。在......
  • C++--多态语法介绍
    目录多态的概念多态的定义及实现多态的构成条件实现多态还有两个必须重要条件虚函数虚函数的重写/覆盖多态场景的⼀个选择题虚函数重写的⼀些其他问题协变析构函数的重写override和final关键字重载/重写/隐藏的对比纯虚函数和抽象类多态的原理虚函数表指针多态的原......
  • C++类型转换详解
        在C语言和C++有很多的类型转换,内置类型(int,char,bool等等编译器自带的)之间的转换像隐式类型转换,强制类型转换,此外还有自定义类型(自己定义的类)和内置类型的转换,自定义类型间的转换,父类和基类之间的类型转换。总之C语言和C++的类型转换复杂多样,如果你对上面的内容有......