gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:35:22 25 4
gpt4 key购买 nike

我需要计算算法的运行时间。我正在使用以下结构来做到这一点:

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)我们可以使用time_points来查询特定now()的各种内容
  • time_points表示特定时间点。
  • duration time_points
  • 之间的区别

    应该是这样的:
    void print_time(std::ostream& out,
    std::chrono::duration<double, std::micro> delta)
    {
    out << delta.count() << std::endl;
    }

    关于c++ - 尝试在C++中为chrono创建函数时没有构造函数实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60588621/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com