我希望我的getEnd函数返回一个开始保存的闭包。
当我调用此闭包时,它应该返回时间差...
如何在c ++中实现它?
接下来的事情:
using namespace std;
long microtime() {
timeval time;
gettimeofday(&time, NULL);
long microsec = ((unsigned long long)time.tv_sec * 1000000) + time.tv_usec;
return microsec;
}
std::function<void()> getEnd (){
long start = microtime();
long end() {
return microtime() - start;
}
return end;
};
答案 0 :(得分:2)
#include <functional>
std::function<long()> getEnd()
{
long const start = microtime();
return [=]{ return microtime() - start; };
}
请注意,上面将在堆上分配内存,因此对于大多数实际应用来说,更好的选择是
struct timer {
long const start;
timer(): start(microtime()) {}
long operator()() { return microtime - start(); }
};
timer getEnd() { return timer(); }