【发布时间】:2014-01-12 02:18:10
【问题描述】:
我目前有一个函数,它接受任何类型的向量和一个函数作为参数。传递的函数在执行时计时,并返回结果时间。使用传递的向量调用函数调用,但我想做的是扩展调用,以便函数调用可以传递任意数量的参数,并且可以使用任意数量的参数调用它。该函数的代码如下,可在名为 functions.h 的文件中找到:
template<typename X, typename F>
double timer(std::vector<X> elements, F function) {
clock_t tstart, tend;
tstart = clock();
function(elements);
tend = clock();
return ((double)tend - tstart) / CLOCKS_PER_SEC;
}
函数 mean 只计算给定值的平均值(它们也在向量中)。包括对计时器的调用的 main.cpp 文件在这里:
#include <cstdlib>
#include <algorithm>
#include <numeric>
#include <vector>
#include <cmath>
#include <ctime>
#include <iostream>
#include "functions.h"
int main(void) {
std::vector<double> x;
x.push_back(53.0);
x.push_back(61.0);
x.push_back(49.0);
x.push_back(67.0);
x.push_back(55.0);
x.push_back(63.0);
double time = timer(x, mean<double>);
std::cout << time << std::endl;
return 0;
}
我不知道怎么做,但我相信可能是来自 main 的调用需要更改?也许是这样的:
double time = timer(mean<double(x)>);
或者
double time = timer(fakeFunction<double(x, y)>);
计时器功能将更新为如下内容:
template<typename F>
double timer(F function) {
clock_t tstart, tend;
tstart = clock();
function();
tend = clock();
return ((double)tend - tstart) / CLOCKS_PER_SEC;
}
任何帮助或提示将不胜感激。
【问题讨论】: