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元素之间进行更复杂的操作.