私は最近、ベクター上で変換/機能を実行しなければならないときに、範囲アダプタをブーストで使用し始めました。以下は、レンジアダプタの使用を開始したときに私が見つけた最も単純な例のスニペットです。C++ブースト範囲アダプター複数のベクトル
int multiplyByTwo(int n) { return n*2; }
std::vector<int> num = {1, 2, 3, 4, 5};
auto result = num | boost::adaptors::transformed(multiplyByTwo);
私の関数が2つの引数を必要とする場合、2つのベクトルを範囲アダプタに渡す方法はありますか?例えば、このような状況で:
int multiplyBoth(int n1, int n2) {return n1*n2; }
std::vector<int> num1 = {1, 2, 3, 4, 5};
std::vector<int> num2 = {1, 2, 3, 4, 5};
は、私はまだレンジアダプタを介して私の関数にnum1
とnum2
を両方のベクターパイプことができるのだろうか?おそらく、このような何か:
auto result = num1 | num2 | boost::adaptors::transformed(multiplyBoth);
'std :: transform'の使い方は? –