使用std::transform将一个范围的元素添加到另一个范围中

using std::transform to add elements of one range to another in place

本文关键字:范围 元素 添加 另一个 一个 transform std 使用      更新时间:2023-10-16

在c++中,如果您有以下代码来添加两个范围(numbers1和numbers2(中的元素,您将如何修改它,使结果存储在numbers2中而不是结果中?

vector<int> numbers1 = {1, 5, 42, 7, 8};
vector<int> numbers2 = {10, 7, 4, 2, 2};
vector<int> results;
std::transform(numbers1.begin(), numbers1.end(),
numbers2.begin(),
std::back_inserter(results),
[](int i, int j) {return i+j;});

只需将第三个参数设置为输出范围的begin

std::transform(numbers1.begin(), numbers1.end(),
numbers2.begin(),
numbers2.begin(),  // output range
[](int i, int j) {return i+j;});

对输出范围的要求是,它必须与第一个输入范围一样大,在这种情况下为numbers1