Jon*_*Mee 10 c++ algorithm stl vector vectormath
说我有两个vector<int>
s:
vector<int> foo{1, 2, 3};
vector<int> bar{10, 20, 30};
Run Code Online (Sandbox Code Playgroud)
现在我想对它们进行向量添加,结果将是:
11
22
33
是否存在可以处理此问题的STL算法,或者我是否需要使用for
循环:
for(auto i = 0; i < foo.size(); ++i){
foo[i] += bar[i];
}
Run Code Online (Sandbox Code Playgroud)
奖金问题,如果我想做一些比添加更复杂的事情,怎么说foo
是一个vector<string>
并且bar
仍然是一个vector<int>
.我希望,如果有一个我可以使用的STL算法,它还会支持lambdas吗?
mka*_*aes 20
你想做什么可以使用std::transform
.在你的情况下:
std::transform(foo.begin(), foo.end(), bar.begin(), foo.begin(), std::plus<int>());
Run Code Online (Sandbox Code Playgroud)
std::transform
确实支持lambdas,这样你就可以在vector
元素之间进行更复杂的操作.