首页 > 解决方案 > 逐列添加嵌套向量

问题描述

所以可以说我有嵌套向量

6 7 8 9 10

5 6 7 8 9
 
4 5 6 7 8 

10 11 12 12 12

它们位于数据嵌套向量中,我想逐列添加它们并将它们推送到 sumV 向量中。

  for(int i = 0; i < data.size(); i++){
       sum = 0; 
       for(int j = 0; j <= i; j++ ){
           
           sum = sum + j; 
           
           
       }
       
       sumV.push_back(sum); 
   }

但它似乎给了我错误的价值观。

标签: c++vector

解决方案


假设所有嵌套向量的大小相同,您可以在循环中使用std::accumulate获得列的总和。

#include <vector>
#include <numeric>
#include <iostream>

int main()
{
    // Test case
    std::vector<std::vector<int>> v = {{6, 7, 8, 9, 10},
                                       {5, 6, 7, 8, 9},
                                       {4, 5, 6, 7, 8},
                                       {10, 11, 12, 12, 12}};

    // The final sum vector  
    std::vector<int> sum;

    // loop for each column
    for(size_t i = 0; i < v[0].size(); ++i)
    {   
        // add up the i'th column and store in sum
        sum.push_back(std::accumulate(v.begin(), v.end(), 0, 
                     [&](int total, std::vector<int>& current) 
                                               { return current[i] + total; }));
    }

    // Output results
    for(auto val : sum)
       std::cout << val << "\n";
}

输出:

25
29
33
36
39

推荐阅读