10

假设我有两个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];
}

额外的问题,如果我想做一些比 add 更复杂的事情怎么办,比如说foo是 avector<string>并且bar仍然是 a vector<int>。我希望,如果有我可以使用的 STL 算法,它也支持 lambdas?

4

1 回答 1

20

您想要做的可以使用std::transform. 在你的情况下:

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

std::transform也支持 lambda,因此您可以在vector元素之间进行更复杂的操作。

于 2015-03-10T11:11:07.717 回答