[英]How to change function to pass variable?
我使用基准测试 c++17 中的算法,以查看它们在不同执行中的速度。
我正在尝试将变量 int n1, n2 传递给 function 但我不知道如何。
我没有很多使用模板的经验
using namespace std;
template <typename TFunc> void RunAndMeasure(const char* title, TFunc func)
{
const auto start = chrono::steady_clock::now();
func();
const auto end = chrono::steady_clock::now();
cout << title << ": " << chrono::duration <double, milli>(end - start).count() << " ms" << "\n \n";
}
int main()
{
int n1 = 3;
int n2 = 5;
vector<int> v{0, 1, 2, 3, 4};
RunAndMeasure("std::warm up", [&v] {
auto result1 = find(execution::par, begin(v), end(v), n1);
auto result2 = find(execution::par, begin(v), end(v), n2);
if (result1 != end(v)) {
cout << "v contains: " << n1 << '\n';
} else {
cout << "v does not contain: " << n1 << '\n';
}
if (result2 != end(v)) {
cout << "v contains: " << n2 << '\n';
} else {
cout << "v does not contain: " << n2 << '\n';
}
});
return 0;
}
#include <vector>
#include <iostream>
using namespace std;
template <typename TFunc>
void RunAndMeasure(const char *title, TFunc func)
{
cout << title;
func();
}
int main()
{
int n1 = 3;
int n2 = 5;
vector<int> v{0, 1, 2, 3, 4};
RunAndMeasure("some title", [&v, n1, n2] {
cout << v.size() << n1 << n2;
});
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.