草庐IT

c++ - 从 boost::chrono::steady_clock::now() 获得双倍

如何从boost::chrono::steady_clock::now()获得double值?我不相信为此有一个.count()参数。为什么我需要这个?我有一个无法解析boost返回值的方法。 最佳答案 boost::chrono::steady_clock::now()返回一个boost::chrono::time_point。boost::chrono::time_point有一个time_since_epoch方法返回一个boost::chrono::duration。boost::chrono::duration有一个cou

c++ - 如何确定 std::chrono::monotonic_clock 是否可用?

C++0xN3092指出monotonic_clock是可选的:20.10.5.2Classmonotonic_clock[time.clock.monotonic]Objectsofclassmonotonic_clockrepresentclocksforwhichvaluesoftime_pointneverdecreaseasphysicaltimeadvances.monotonic_clockmaybeasynonymforsystem_clockifsystem_clock::is_monotonicistrue.Theclassmonotonic_clockiscond

c++ - 按值或引用 const 传递 std::chrono::duration?

所以在过去,我通过引用const传递了std::chrono::duration值,但现在我认为它们只不过是包装在一个类中的单一算术类型,所以它有意义按值传递。有人介绍过吗? 最佳答案 根据规范,duration包装了Rep中指定类型的单个变量(滴答数)template>classduration;所以基本上您可以选择处理复制/传递constref,就像您对该Rep类型所做的那样。当我以前使用chromo::duration时,我选择它是一个long,在那种情况下,我没有看到通过const引用传递的理由,(尤其是在我的体系结构中,一

c++ - std::chrono::time_point 无效值

boost/std::chrono::time_pointmy_time_point(/*invalidvalue*/);我需要存储一个无效/无意义/标记值。我怎么可能那样做? 最佳答案 您可以使用boost::optional(或std::optional,如果您支持C++17)表示chrono::time_point的无效状态:#include#includeintmain(){usingmy_clock=std::chrono::system_clock;usingmy_time_point=std::chrono::time

c++ - std::chrono::duration_cast 1 秒和 2 秒的奇怪结果

我正在运行一个简单的程序,其中,我使用system_clock::now获取一个time_point,然后使用this_thread::sleep_for(seconds(1))和time_point与system_clock::now。现在,如果我向第一个time_point添加一些额外的duration,它会在1秒和2秒内给出完全相同的结果!这是democode:#include#include#includeusingnamespacestd;voidCheckDuration(std::chrono::durationseconds){autostart=std::chrono

c++ - <chrono> 溢出保证

我有这段代码:autotime_point_a=std::chrono::high_resolution_clock::now();while(true){autotime_point_b=std::chrono::high_resolution_clock::now();autocounter_ms=std::chrono::duration_castcounter_ms.count()是否保证始终返回有效值?count()有可能抛出吗?如果counter_ms超过其基础整数类型的大小(我认为它是longlong),会发生什么情况?我的程序将连续运行几天,我需要知道如果/当count

c++ - 为什么 std::chrono::duration 基于秒

我在学习库,并考虑std::chrono::duration类,是否有任何特定理由将其基于秒数?例如,存储秒数的变量是chrono::durationtwo_seconds(2);所有其他时间跨度都需要将它们与秒相关联,例如chrono::duration>two_minutes(2);chrono::duration>two_milliseconds(2);chrono::duration>two_days(2);是否有任何理由将持续时间设为秒而不是分钟、小时等? 最佳答案 选择秒是因为它是国际单位制和整个科学的基本时间单位。甚至

c++ - std::chrono 有多准确?

std::chrono宣称它可以将结果报告到纳秒级别。在典型的x86_64Linux或Windows机器上,人们期望它有多准确?例如,10ns、10µs、10ms和10s的测量误差条是多少? 最佳答案 这很可能取决于硬件和操作系统。例如,当我使用QueryPerformanceFrequency()询问Windows时钟频率是多少时,我得到3903987,如果你取它的倒数,你会得到大约256纳秒的时钟周期或分辨率。这是我的操作系统报告的值。根据文档,对于std::chrono,可表示的最小持续时间是high_resolution_c

c++ - 如何将 std::chrono 包装在 C++ 迭代器类型中

我尝试创建一个可迭代类型,它接收特定持续时间类型的模板参数,例如std::seconds、std::hours等,我希望它接收代表指定持续时间的time_points的参数2值,并且能够通过增加当前time_point在基于范围的for循环中使用这样的构造>按该持续时间或指定持续时间的单位,类似于以下内容:DateRangedr(now(),50);for(autod:dr){//dosomethingatunittime}我试过这样实现usingnamespacestd::chrono;template,typenameTime_pointer=Time_type*>classDat

c++ - std::string 到 std::chrono time_point

我有以下时间格式的字符串:“%Y-%m-%d%H:%M:%S.%f”其中%f是毫秒,例如:14:31:23.946571我想把它作为chronotime_point。有Actor阵容吗? 最佳答案 std::string没有转换至std::chrono::time_point.你必须建立std::chrono::time_point对象。使用除微秒以外的所有内容来构造std::tm对象()。年份应基于1900,而不是0。月份应基于0,而不是1。使用std::mktime()创建一个std::time_t目的。创建std::chron