C++ 二维数组并按行存储值。第一个循环用于行索引,第二个循环用于列索引

C++ 二维数组并按行存储值。第一个循环用于行索引,第二个循环用于列索引,c++,C++,我刚开始学c++ 以下是2D数组的代码,用于按行存储值。第一个循环用于行索引,第二个循环用于列索引,而且我在arr[x][y]和arr[col]中得到了错误 #include <iostream> using namespace std; int main() { int x, y; int arr[x][y]; cout << "Enter row number and column number :"; cin >> x

我刚开始学c++

以下是2D数组的代码,用于按行存储值。第一个循环用于行索引,第二个循环用于列索引,而且我在arr[x][y]和arr[col]中得到了错误

#include <iostream>
using namespace std;

int main()
{
    int x, y;
    int arr[x][y];
    cout << "Enter row number and column number :";
    cin >> x >> y;

    int row, col;
    cout << "Enter value of array\n";

    for (int row = 0; row < x; ++row)
    {
        for (int col = 0; col < y; ++col)
        {
            cin >> arr[row][col] << " ";
        }
    }

    cout << "Value of array are:\n";
    for (row = 0; row < x; row++)
    {
        for (col = 0; col < y; col++)
        {
            cout << arr[row] << arr[col] << " ";
        }
        cout << "\n";
    }
    return 0;
}
#包括
使用名称空间std;
int main()
{
int x,y;
int arr[x][y];
cout>x>>y;
int row,col;
cout>arr[row][col]问题1:订单问题。
.在我看来,最大的问题是,它们使程序很难控制自动内存的使用量。为
x
y
输入2000,然后看着程序失败

解决方案:

cin
读取到
arr[row][col],然后尝试将
写入流。
cin`仅为输入,无法写入

解决方案:

int x, y; // x and y have undefined values
cout << "Enter row number and column number :";
cin >> x >> y; // now we have x and y values. 
int arr[x][y]; // can now dimension array
由于您可能根本不需要写操作,
会根据空格分隔自动分隔令牌,因此我们可以安全地放弃写操作

cin >> arr[row][col];
问题4:写入数组而不是数组中的数据 我想这就够了

推荐阅读


。你目前正在学习的任何东西都没有给你带来任何好处。

C++中的数组边界必须是常量表达式(即编译时常量)。.
x
y
不是常量表达式。如果需要在运行时确定大小的数组,则必须求助于动态内存分配。std::vector可能是您正在寻找的…一些编译器确实允许变量
x
y
用作数组维度。这是非标准的,I不要推荐,这通常是危险的,但有时也是一种选择。我建议使用类似的方法。无论您如何定义矩阵,强烈建议您仅在用户给定值后使用
x
y
。建议:当您有错误时,获取它们的文本版本并添加让潜在的答案确切地知道你在处理什么问题。更喜欢通过从程序中删除与问题无关的所有内容来一次解决一个问题。如果你制作的程序只会导致错误,那么你或其他人回答问题就会容易得多。Ver通常这很容易,你甚至不需要问这个问题。旁注:除了编译器错误,你还会收到编译器警告。虽然警告不会阻止程序编译,但不要忽略它们,因为编译器试图告诉你你的逻辑可疑。请尽最大努力理解并解决警告。F未能解决警告通常会导致程序无法按预期执行,因此您最好在浪费调试时间之前解决问题。
cin>>arr[row][col]
int arr[x][y]; // fails on many compilers. 
               // Don't be angry, they are following the language rules.
vector<vector<int>> arr(x, vector<int>(y));
cin >> arr[row][col] << " ";
cin >> arr[row][col];
cout << arr[row] << arr[col] << " ";
cout << arr[row][col] << " ";