C++ 如何对二维数组的列求和

C++ 如何对二维数组的列求和,c++,C++,**它在beggining有效,加16和4,但不加2+3,甚至得到8 我做错了什么** 我真的不明白如何分开计算 #include <iostream> #include <iomanip> using namespace std; int main() { int a = 0; int my_vector[][2] = { {16,2}, {4, 3} }; for (int r = 0; r < 2; r++) {

**它在beggining有效,加16和4,但不加2+3,甚至得到8

我做错了什么**

我真的不明白如何分开计算

#include <iostream>
#include <iomanip>

using namespace std;



int main() {
   int a = 0;
   int my_vector[][2] = { {16,2}, {4, 3} };


   for (int r = 0; r < 2; r++) 
   {
       for (int c = 0; c < 2; c++) 
       {
           std::cout << "  " << my_vector[r][c] << "\t";

           a = *my_vector[r] + *my_vector[c];
           
     }



       std::cout << "\n" << a;
       std::cout << "\n";
   }  ```
   


 [1]: https://i.stack.imgur.com/RbTcO.png
#包括
#包括
使用名称空间std;
int main(){
int a=0;
int my_向量[][2]={{16,2},{4,3};
对于(int r=0;r<2;r++)
{
对于(int c=0;c<2;c++)
{

std::cout在这里,您取消引用
my\u vector
r
中的第一个元素,并将其添加到
my\u vactor
c
中取消引用的第一个元素:

a = *my_vector[r] + *my_vector[c];
然后存储在
a
中的结果在下一个循环中被覆盖

你可能是说:

a += my_vector[r][c]; // or: a = a + my_vector[r][c];
另一种方法是使用
std::for_each
std::accumulate

#include <algorithm> // std::for_each
#include <numeric>   // std::accumulate
#include <iostream>
#include <iterator>  // std::begin, std::end

int main() {
    int a = 0;
    int my_vector[][2] = { {16,2}, {4, 3} };

    // for_each loops over the rows
    std::for_each(std::begin(my_vector), std::end(my_vector), [&a](auto& row) {
        // and accumulate sums up everything in columns in that row
        a += std::accumulate(std::begin(row), std::end(row), 0);
    });

    std::cout << "\n" << a  << '\n';
}
#包括//std::for#u
#包括//标准::累积
#包括
#包括//标准::开始,标准::结束
int main(){
int a=0;
int my_向量[][2]={{16,2},{4,3};
//对于_,每行循环一次
std::for_each(std::begin(my_vector)、std::end(my_vector)、[&a](自动和行){
//累加对该行列中的所有内容进行汇总
a+=std::累加(std::开始(行),std::结束(行),0);
});

std::你能通过
my_vector[r][c]
访问要打印的元素吗?为什么在将它们相加时要使用其他东西?你只需将它们相加到
a
,所以你想要2D向量中所有元素的总和,结果应该是25,对吗?