関数を並列で使用する方法をほとんど知りませんでした。次のコード行は、インデックスの二乗値を計算し、そのインデックスに配列(四角形)を配置します。 parallel_for関数は、ヘッダーの下の並行処理名前空間の一部としてVisual Studio 2010で使用できます。parallel_forでの関数オブジェクトの使用
parallel_for(static_cast<size_t>(0), count,
[&squares](size_t n) { squares[n] = (n+1)*(n+1); });
ラムダ式を使用して2乗を並列に計算することがわかります。このコードは正常に動作し、正しくコンパイルされます。ただし、ラムダ式はparallel_for関数をコードでクラッタします。私は、例えば、単に関数オブジェクト内ラムダ式を定義することを考えていた:私はparallel_forの関数内で、この関数(四角)を使用する方法
function<void(size_t)> Squares =
[&squares](size_t n) { squares[n] = (n+1)*(n+1); };
私の質問はありますか?正方形関数を正しく書いていないのですか、これはラムダ式を使うためのparallel_forの単なるパラダイムですか?あなたは先に進み、他のいくつかの並列ライブラリをマイクロソフト以外の私に勧めてもらえますが、私の質問に対する答えを知りたいと思っています。
@Steveラムダ式が必要な場所にSquares()関数を配置するだけで、VS10はエラーを取り上げてコンパイルしません。 – sj755