2017-02-05 9 views
1

私はstd::vector<std::array<double,2>>にコード化されたもののリストを持っています。これは基本的に点(x、y)のリストです。別のリストを作成したいが、今はポイント(x、y^2)のリストを作成したい。配列ベクトルの要素に関数を適用する

私はループでこれを行うことができますが、STLアルゴリズムを使用してこれを達成する最良の方法は何ですか?私はstd::for_eachとlambdaを組み合わせてみようとしていましたが、私はまだそこに着くことができません。

+0

これを行うには、あなたの努力をしないでください。それ以外の場合は、 "use std :: for_each" –

答えて

3

std::for_eachは、範囲に関数を適用し、結果を別の範囲に格納する場合は、std::transformを使用する必要があります。例えば

std::transform(src.begin(), src.end(), std::back_inserter(dest), 
       [](const std::array<double,2>& arr) { return std::array<double,2>{arr[0], arr[1] * arr[1]}; }); 
関連する問題