C++调试-从文件中读取并输出2D数组

C++调试-从文件中读取并输出2D数组,c++,C++,这是我到目前为止所写的,数组是动态声明的,但是当我运行时,它会出现错误,说Segmentation fault core dumped。 对于输入文件,第一行是4个数字:行、列、最小值、最大值,我需要将它们打印出来,并将整数放入从第二行开始的二维数组中。如何才能做到这一点?通常从预先分配的特定大小的数组开始,然后随着插入更多元素而增加容量。这意味着当一个元素挂起插入到数组中,但数组已填充到其预设容量时,您可以分配一个新的、更大的内存块,将元素从原始数组复制到新数组,再加上新元素,删除[]原始数组

这是我到目前为止所写的,数组是动态声明的,但是当我运行时,它会出现错误,说Segmentation fault core dumped。
对于输入文件,第一行是4个数字:行、列、最小值、最大值,我需要将它们打印出来,并将整数放入从第二行开始的二维数组中。如何才能做到这一点?

通常从预先分配的特定大小的数组开始,然后随着插入更多元素而增加容量。这意味着当一个元素挂起插入到数组中,但数组已填充到其预设容量时,您可以分配一个新的、更大的内存块,将元素从原始数组复制到新数组,再加上新元素,删除[]原始数组并将其分配给新数组


<>但是,这需要内存管理,一般来说这不是C++中的一个好的实践。原因是有一些改进,比如std::vector,它是动态数组的包装器,本质上就是上面描述的那个。但是因为你是一个初学者,我想说的是,首先要掌握使用低级材料的知识,然后逐步提高。

X和Y在用作数组大小和for循环的结束条件时是未初始化的……未定义的行为。为什么不改为使用向量呢?但这不是我们使用动态数组的原因吗?我们不知道数组的大小。我还没有了解向量…向量实际上在访问它们的方式上非常类似于数组。下面是一个不错的教程:
#include<iostream>
#include<fstream>
using namespace std;


int main(){
      ifstream infile;
      int X,Y;
      char ch;
      infile.open("input.txt");
      int** intarray = new int*[X];
      for(int i = 0; i < X; ++i)
       intarray[i] = new int[Y];
           for(int k=0; k<16; ++k){
             for(int j=0; j<24; ++j){
              infile >> intarray[k][j];
              cout << intarray[k][j]<<" ";
             }
           cout<< endl;
           }

           infile.get(ch);

  infile.close();

}