10

2 つvector<int>の があるとします:

vector<int> foo{1, 2, 3};
vector<int> bar{10, 20, 30};

今、結果が次のようになるように、それらにベクトルを追加したいと思います。

11
22
33

forこれを処理するSTLアルゴリズムはありますか、それともループを使用する必要がありますか?

for(auto i = 0; i < foo.size(); ++i){
    foo[i] += bar[i];
}

おまけの質問です。加算よりも複雑なことfoovector<string>したい場合はどうすればよいでしょうか。使用できるSTLアルゴリズムがあれば、ラムダもサポートすることを願っていますか?barvector<int>

4

1 に答える 1

20

やりたいことは、を使用して実現できますstd::transform。あなたの場合:

std::transform(foo.begin(), foo.end(), bar.begin(), foo.begin(), std::plus<int>());

std::transformラムダもサポートしているため、vector要素間でより複雑な操作を実行できます。

于 2015-03-10T11:11:07.717 に答える