【问题标题】:using std::transform to add elements of one range to another in place使用 std::transform 将一个范围的元素添加到另一个范围
【发布时间】:2020-11-02 04:05:48
【问题描述】:

在 c++ 中,如果您有以下代码从两个范围(数字 1 和数字 2)中添加元素,您将如何修改它以将结果存储在数字 2 中而不是结果中?

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;});

【问题讨论】:

    标签: c++ stl iterator range addition


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-01-09
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 2021-01-16
      • 2021-09-07
      • 2014-03-14
      • 2015-07-22
      • 1970-01-01
      相关资源
      最近更新 更多