Pře*_*tný 10 c++ c++11 c++-chrono
让我们有using duration = std::chrono::steady_clock::duration。我想以最大的精度优雅地将持续时间转换为以秒为单位的两倍。
我找到了相反的方法(将秒转换为双精度为 std::chrono::duration?),但它没有帮助我找到它。
或者表示,我最想要一些 std function double F(duration),它返回秒。
谢谢你。
Aco*_*orn 17
简单地做:
std::chrono::duration<double>(d).count()
Run Code Online (Sandbox Code Playgroud)
或者,作为一个函数:
template <class Rep, class Period>
constexpr auto F(const std::chrono::duration<Rep,Period>& d)
{
return std::chrono::duration<double>(d).count();
}
Run Code Online (Sandbox Code Playgroud)
如果您需要std::chrono::duration构造函数无法完成的更复杂的强制转换,请使用std::chrono::duration_cast.
将 a 转换std::chrono::duration为任何数字“计数”非常简单!
您可以将任意两个s除以std::chrono::duration有效地获得计数。
给定任何周期的持续时间d和任何整数表示:
using std::chrono_literals;
// Want to know how many seconds? Divide by one second!
std::int64_t int_seconds = d / 1s;
double fp_seconds = d / 1.0s;
Run Code Online (Sandbox Code Playgroud)
如图所示,两个持续时间的周期是多少并不重要。结果类型将是两个持续时间的公共类型。
这对我来说是最直接的方法:
auto start = std::chrono::steady_clock::now();
/*code*/
auto end = std::chrono::steady_clock::now();
std::chrono::duration<double> diff = end - start;
std::cout << "Duration [seconds]: " << diff.count() << std::endl;
Run Code Online (Sandbox Code Playgroud)
但是我不知道精度...虽然这个方法非常精确。
| 归档时间: |
|
| 查看次数: |
9992 次 |
| 最近记录: |