gpt4 book ai didi

c++ - 如何在C++中将输入正确读取为2D vector vector >

转载 作者:行者123 更新时间:2023-12-02 09:49:44 24 4
gpt4 key购买 nike

我需要在具有n列和n行的矩阵上使用vector < vector > int > >查找每一行的总和。

例如,如果这是归因,

n = 4 
1 2 3 4
1 1 1 2
2 2 41 8
3 3 10 2

输出应该是
10
5
53
18

到目前为止,这是我的代码:
vector<vector<int>> A;
int n, x;

cin >> n;

for (int i = 0; i < n; ++i)
for(int j = 0; j < n; ++j)
cin >> x, A[i].emplace_back(x);

for(int i = 0 ; i < n ; ++i)
{
int sum = accumulate(A[i].begin(), A[i].end(), 0);
cout << sum << "\n";
}

我也不认为我对矩阵的阅读是好的。

如果您可以提供帮助,将不胜感激!

谢谢!

最佳答案

要读入2D vector ,您需要读入每一行的1D vector ,然后将该1D vector 添加到2D vector 中。您可以执行以下操作:

for (int i = 0; i < n; ++i) 
{
std::vector<int> row;
for(int j = 0; j < n; ++j)
{
cin >> x;
row.push_back(x);
}
A.push_back(row);
}

您甚至可以为整个2D vector 分配空间,然后直接读取到正确的位置,如下所示:
auto A = std::vector<std::vector<int>>(n, std::vector<int>(n, 0));

for (int i = 0; i < n; ++i)
for(int j = 0; j < n; ++j)
cin >> A[i][j];

您可以根据评论进一步简化此操作
auto A = std::vector<std::vector<int>>(n, std::vector<int>(n, 0));

for (auto &row : A)
for(auto &element : row)
cin >> element;

您用于汇总行的代码似乎很合理。

关于c++ - 如何在C++中将输入正确读取为2D vector vector <vector <int >>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61277306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com