C++ 在C++;std,如何在运行时选择计时的持续时间

C++ 在C++;std,如何在运行时选择计时的持续时间,c++,std,duration,chrono,C++,Std,Duration,Chrono,我一直在寻找这个问题,但没有找到确切问题的解决方案 简而言之,有没有一种方法可以通过计算定义std::chronos变量的持续时间?以下面的代码为例: auto timed = std::chrono::duration_cast<std::chrono::microseconds>(t1-t0).count(); auto timed=std::chrono::duration_cast(t1-t0).count(); 我在一个定制的Timer类中使用它,该类测量某些函数的代码

我一直在寻找这个问题,但没有找到确切问题的解决方案

简而言之,有没有一种方法可以通过计算定义std::chronos变量的持续时间?以下面的代码为例:

auto timed = std::chrono::duration_cast<std::chrono::microseconds>(t1-t0).count();
auto timed=std::chrono::duration_cast(t1-t0).count();
我在一个定制的
Timer
类中使用它,该类测量某些函数的代码执行时间。我试图做的是创建一个
开关
,通过该开关,一个cam可以定义结果是否应存储为
微秒
毫秒


< C++ >

< p>你可以做类似的事情(假设代码> SC< /COD>是代码> STD::如您所见,强制转换是一个模板参数(编译时参数):


您始终可以保存最高分辨率的结果,并在有人以较低分辨率要求时转换它
class Timer {
  sc::time_point<sc::steady_clock> _start;

  Timer() : _start(sc::steady_clock::now()) {
  }

  template <class Unit>
  int getElapsed() {
      return sc::duration_cast<Unit>(sc::steady_clock::now() - _start).count();
  }
};
Timer t;
...
t.elapsed<sc::milliseconds>();
enum class UnitCount { ms, s };

int Timer::getElapsedInUnits(UnitCount c) {
    switch (c) {
      case UnitCount::ms:
         return this->getElapsed<sc::milliseconds>();
      case UnitCount::s
         ...
    }
}