尝试在 C++ 中为 chrono 创建函数时没有构造函数实例

No instance of constructor when trying to make a function for chrono in C++

我需要计算算法的运行时间。我正在使用以下结构来执行此操作:

auto start = std::chrono::stedy_clock::now();
//code
auto end = std::chrono::stedy_clock::now();
auto diff = end - start;
std::cout << std::chrono::duration <double, std::milli> (diff).count() << " ms" << endl;

但是,由于我有多种算法需要测试,所以我决定制作以下功能:

std::chrono::time_point<std::chrono::steady_clock> time_now()
{
    return std::chrono::steady_clock::now();
}

void print_time(std::ostream& out, std::chrono::_V2::steady_clock differnce)
{
    out << std::chrono::duration <double, std::micro> (differnce).count() << std::endl;
}

我的打印函数 vscode 出现以下错误:

no instance of constructor "std::chrono::duration<_Rep, _Period>::duration [with _Rep=double, _Period=std::micro]" matches the argument list -- argument types are: (std::chrono::_V2::steady_clock)

知道我为什么会遇到这个问题以及如何解决它吗?

谢谢!

您向 print_time 函数传递了错误的类型。该函数正在声明中,但是当您将持续时间传递给它时,编译器会尝试将 duration 转换为 clock 这没有意义,这就是您获得该构造函数的原因留言。

一些时间类型是:

  • clock(s) 我们可以使用 now()
  • 查询特定 time_points 的各种内容
  • time_points代表一个特定的时刻。
  • duration 相差time_points

应该是这样的:

void print_time(std::ostream& out,
  std::chrono::duration<double, std::micro> delta)
{
    out << delta.count() << std::endl;
}