2013-07-06 47 views
1

我試圖使用parallel_for時,但我得到一個錯誤,代碼: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: no instance of overloaded function "parallel_for" matches the argument list >argument types are: (size_t, int, lambda []void (size_t i)->void

這是唯一的例子,我在更大的項目中使用它,但首先我想了解如何正確使用它。

* 編輯 *

我改變了代碼:

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

但我仍得到討厭的錯誤: 智能感知:沒有重載函數的實例 「parallel_for時」 的說法相匹配列表參數類型是:(size_t,int,lambda [] void(size_t i) - > void)

+3

那是你的實際代碼?似乎有一些缺少括號等 –

+4

嘗試'parallel_for時(爲size_t(0),爲size_t(50),[b](爲size_t我)...);' – yohjp

+0

我加括號(我的錯誤...)但我再次得到錯誤 – user2299317

回答

3

parallel_for具有原型

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

Tfirstlast推斷,但你給它size_tint使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: