<chrono>和<ctime>有什么区别?

Yee*_*Liu 10 c++ ctime c++11 c++-chrono

为了测量函数的执行时间,我可以同时使用它们.但使用<chrono>和有<ctime>什么区别?我应该更喜欢一个而不是另一个吗?

Mar*_*s K 11

ctime是一个C风格的标题,它是旧的,不是类型安全,不如准确chrono.chrono是C++中的首选选项; 它是一个现代的C++标题,它的类型安全,就像我们的硬件允许的那样准确,它具有扩展的功能,更重要的是,它遵循C++(而不是C)逻辑,因此某些事物会更加自然/富有表现力,所以我们可能期望它能够意识到许多当代语言特征(线程,异常等) - 我们无法做出相同的假设ctime.

也就是说,仍然有几个用例ctime(或者甚至time.h),例如当我们需要与某些C API交谈时,或者当我们依赖旧的代码库或者当我们使用一些遵循不同逻辑的库时.C++旨在务实,不要在任何方面"纯粹"; 这就是为什么ctime即使程序员不鼓励使用它们,各种过时的标题,语法和语言功能仍然存在.


Dav*_*vid 5

ctime是老学校.它现在唯一的用途是作为从时间点获取日期的垃圾解决方案(因为c ++没有足够的标准日期时间库).对于一般时间需求,请使用chrono.如果您需要将a system_clock::time_point转换为日期/时间,请使用ctime.

  • 比`ctime`一个更好的办法把转`SYSTEM_CLOCK :: time_point`到现场的日期/时间结构:http://howardhinnant.github.io/date_v2.html :-) (5认同)
  • @YeeLiu:`ctime`不是"类型安全".例如`difftime`返回`double`而不是`duration`.并且`tm.tm_sec`的类型为`int`而不是类型`seconds`.缺乏类型安全性意味着编译器无法检查逻辑错误(例如)在时间单位上执行不合逻辑的代数. (4认同)
  • 只是想知道为什么`ctime`是垃圾解决方案? (3认同)