параллель для — c ++ ошибка при использовании параллел

Я пытаюсь использовать parallel_for, но я получаю ошибку, код:

#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <ppl.h>

using namespace std;
using namespace concurrency;

int _tmain(int argc, _TCHAR* argv[])
{
parallel_for(size_t(0), 50, [&](size_t i)
{
cout << i << ",";
}

cout << endl;

getchar();
return 0;
}

Ошибка:

IntelliSense: ни один экземпляр перегруженной функции «parallel_for» не соответствует списку аргументов> типы аргументов: (size_t, int, lambda [] void (size_t i) -> void

Это всего лишь пример, я должен использовать его в большем проекте, но прежде всего я хочу понять, как правильно его использовать.

*редактировать*

я изменил код на:

parallel_for(size_t(0), 50, [&](size_t i)
{
cout << i << ",";
});

но все же я получаю досадную ошибку:
IntelliSense: ни один экземпляр перегруженной функции «parallel_for» не соответствует типам аргументов списка аргументов: (size_t, int, lambda [] void (size_t i) -> void)

3

Решение

parallel_for имеет прототип

template <typename T, typename F>
void parallel_for(
T first,
T last,
F& f,
const auto_partitioner& _Part = auto_partitioner()
);

T выводится из first а также last но вы даете это size_t а также int изготовление T неоднозначный.

Также есть другие перегруженные функции parallel_for и MSVC генерирует глупое сообщение об ошибке в таком случае.

Решение 1:

int _tmain(int argc, _TCHAR* argv[])
{
parallel_for(size_t(0), size_t(50), [&](size_t i)
{
cout << i << ",";
});

cout << endl;

getchar();
return 0;
}

Решение 2:

parallel_for<size_t>(size_t(0), 50, [&](size_t i)
{
cout << i << ",";
});
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]