我目前正在嘗試實現一個函數,該函數將爲該函數輸入任何其他函數和一組有效的輸入值,並返回該函數的結果以及打印執行它需要多長時間。創建可變模板函數來測量和執行其他功能
這裏是我到現在爲止:
template<typename T, typename... Tail>
T measureAndExecute(const function<T(Tail...)> f, Tail... tail) {
high_resolution_clock::time_point time1 = high_resolution_clock::now();
T res = f(tail...);
high_resolution_clock::time_point time2 = high_resolution_clock::now();
auto duration = duration_cast<milliseconds>(time2 - time1).count();
cout << duration << " milliseconds" << endl;
return res;
}
我嘗試的東西像這樣運行它:
int res = measureAndExecute(function<int(vector<int>&, vector<bool>&, unsigned long)> fibonacci, terms, calculated, n-1);
這是一個功能來查找斐波納契數列的術語。
當我嘗試運行它,我得到以下錯誤:
error: expected '(' for function-style cast or type construction
有人可以請給我前進的道路上或如何進行的想法?
看看你傳遞什麼作爲第一個參數:'函數& ,矢量&,unsigned long)> fibonacci' - 這看起來不正確。如果你想從'fibonacci'構造一個'std :: function',你不應該把'fibonacci'放在圓括號中,例如'function &,vector &,unsigned long)>(fibonacci) ? –
TerraPass
我想你可能會發現std :: bind有趣。 – ZivS
@TerraPass我會試一試。 – soltzu