Vector Add的STL算法
STL algorithm for Vector Add
假设我有两个 vector<int>
s:
vector<int> foo{1, 2, 3};
vector<int> bar{10, 20, 30};
现在我想对它们做一个矢量相加,结果是:
11
22
33
是否有可以处理此问题的 STL 算法,或者我是否需要使用 for
循环:
for(auto i = 0; i < foo.size(); ++i){
foo[i] += bar[i];
}
奖金问题,如果我想做一些比添加更复杂的事情,假设 foo
是 vector<string>
而 bar
仍然是 vector<int>
。我希望,如果有我可以使用的 STL 算法,它也能支持 lambdas?
你想做的事可以用std::transform
来实现。
你的情况:
std::transform(foo.begin(), foo.end(), bar.begin(), foo.begin(), std::plus<int>());
std::transform
也支持 lambda,因此您可以在 vector
元素之间进行更复杂的操作。
假设我有两个 vector<int>
s:
vector<int> foo{1, 2, 3};
vector<int> bar{10, 20, 30};
现在我想对它们做一个矢量相加,结果是:
11
22
33
是否有可以处理此问题的 STL 算法,或者我是否需要使用 for
循环:
for(auto i = 0; i < foo.size(); ++i){
foo[i] += bar[i];
}
奖金问题,如果我想做一些比添加更复杂的事情,假设 foo
是 vector<string>
而 bar
仍然是 vector<int>
。我希望,如果有我可以使用的 STL 算法,它也能支持 lambdas?
你想做的事可以用std::transform
来实现。
你的情况:
std::transform(foo.begin(), foo.end(), bar.begin(), foo.begin(), std::plus<int>());
std::transform
也支持 lambda,因此您可以在 vector
元素之间进行更复杂的操作。