c++ - 如何从析构函数返回变量

所以我有一个名为 timer 的结构,它确定一段代码执行和完成所花费的时间,我将对我的排序算法运行一些基准测试,并取每次排序所花费时间的平均值算法。

struct Example{
    std::chrono::time_point<std::chrono::steady_clock> start, end;
    Example() {
        start = std::chrono::high_resolution_clock::now();
    }
    ~Example() {
        end = std::chrono::high_resolution_clock::now();
        std::chrono::duration<float>  duration = end - start;
        float ms = duration.count() * 1000.0f;
        std::cout << ms << " miliseconds\n";
        // a way to return ms?
    }
};

但是,我无法找到一种方法从析构函数中取出变量 ms 并在测量时间后将其分配给某些东西。有什么方法可以解决这个问题,或者我可以用更好的方式编写我的结构吗?

最佳答案

您不能从析构函数返回任何内容,但您可以将值分配给您在创建时提供给 Example 的变量。示例:

#include <chrono>
#include <iostream>

template <class Clock = std::chrono::steady_clock>
struct Example {
    std::chrono::time_point<Clock> start;
    std::chrono::duration<float>& duration;         // a reference

    Example(std::chrono::duration<float>& dur) :    // take the duration as an argument
        start(Clock::now()),
        duration(dur)
    {}

    ~Example() {
        auto end = Clock::now();
        duration = end - start; // assign the value
    }
};

int main() {
    std::chrono::duration<float> duration;
    {
        Example<> x(duration);
    }
    std::cout << duration.count() << '\n';  // read it afterawrds
}

https://stackoverflow.com/questions/72338886/

相关文章:

r - 如何在循环中获取标签

spring-webflux - Netty Http 客户端连接池

javascript - 我如何在 react 中使用刷新 token

python - 如何在 Python 中对列表进行排序和过滤?

python - 计算数据框 Pandas 的多列中某个值的出现次数

vector - 将具有多个参数的函数应用于 Julia 中的向量

c - 如何从内存中正确分配结构

javascript - 如何在 redux-toolkit 中输入 'prepare' 函数

python - Python 何时从实例 __dict__ 返回到类 __dict__?

html - 对 div 标签内的 span 元素应用边距和在 div 标签内应用边距有什么区别?