C++ 如何对二维数组的列求和
**它在beggining有效,加16和4,但不加2+3,甚至得到8 我做错了什么** 我真的不明白如何分开计算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++) {
#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,对吗?