C++ 在C+中指定数据点的2d数组+;

C++ 在C+中指定数据点的2d数组+;,c++,multidimensional-array,C++,Multidimensional Array,为什么当我为矩阵中的一个点赋值时,它会为整列赋值? 我试着让它只在那一点上分配。目前,我正在自学计算机科学课程的第二部分,所以我在玩这个。 我的文件只指定矩阵的大小。 它可以编译,并且没有运行时错误。 我正在使用代码块。还有更好的吗 我的sample.txt文件现在获取两个数字3和5。 我正在努力理解,以便能够实现文件的其余部分,将值放入矩阵中的正确点 #include <iostream> #include<string> #include<fstream>

为什么当我为矩阵中的一个点赋值时,它会为整列赋值? 我试着让它只在那一点上分配。目前,我正在自学计算机科学课程的第二部分,所以我在玩这个。 我的文件只指定矩阵的大小。 它可以编译,并且没有运行时错误。 我正在使用代码块。还有更好的吗

我的sample.txt文件现在获取两个数字3和5。 我正在努力理解,以便能够实现文件的其余部分,将值放入矩阵中的正确点

#include <iostream>
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;

int main()
{
   // variable initialition
   string fileName;
   int value;
   int row=0,col=0; //for size of array
   int a[row][col];
   int row2,col2; // for putting values in array

   fileName="sample.txt";
   ifstream input;
   input.open("sample.txt");

   if (!input)
   {
      cout<<"ERROR: BAD FILE";
   }


   input>>row;
   input>>col;
   cout<<" ROW :"<<row<<endl;
   cout<< " COL :"<<col<<endl;


   for (int indexRow=0; indexRow<row; indexRow++)
   {


      for (int indexCol=0; indexCol<col; indexCol++)
      {
         a[indexRow][indexCol]=0;
      }
   }


   a[0][1]=232;

   for (int row2=0; row2<row; row2++)
   {
      for (int col2=0; col2<col; col2++)
      {


         cout<<a[row2][col2]<<" ";
      }

      cout<<endl;
   }




   input.close();

   return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
//变量初始化
字符串文件名;
int值;
int row=0,col=0;//表示数组的大小
int a[行][col];
int row2,col2;//用于将值放入数组
fileName=“sample.txt”;
ifstream输入;
打开(“sample.txt”);
如果(!输入)
{
库特罗;
输入>>列;

CUT< P>动态数组并不像C++中那样简单。您使用的语法仅用于创建固定大小的数组。在这种情况下,需要创建具有恒定的非零值的2D数组,如:

int a[10][10];
而且

…绝对不会自动调整阵列的大小

<>你应该避免使用原始数组,并考虑使用向量数组来表示2D数组:

std::vector<std::vector<int>> a;
std::向量a;
有关动态阵列的更多备选方案和讨论,请查看以下问题:


不要告诉我这是编译的…我是说,你有运行时错误,或者,正如我所预料的,编译时错误?好吧,你编辑了帖子,说它编译(并运行)…我不明白
int row=0,col=0;int a[row][col col
编译。它两次违反了标准:它同时是可变大小数组和零大小数组!@AzzA:g++很乐意让你使用这样的可变大小数组,除非你使用
-ansi
和/或
-pedantic
标志。我认为默认情况下允许这样做对他们来说是一个糟糕的主意。我发现了我的错误并修好了。不过谢谢你。看来我必须掌握指针。
std::vector<std::vector<int>> a;