Как изменить функцию для передачи переменной? - PullRequest
0 голосов
/ 08 октября 2019

Я тестирую алгоритмы из c ++ 17, используя эталонный тест, чтобы увидеть скорость каждого из них в различных исполнениях.

Я пытаюсь передать переменные int n1, n2 для работы, но яне могу понять, как.

У меня нет большого опыта использования шаблонов

   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;

   }

1 Ответ

0 голосов
/ 08 октября 2019
#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;
}
...