在C ++中分配数据点的2d数组

时间:2011-12-17 02:40:59

标签: c++ multidimensional-array

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

我的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;
}

1 个答案:

答案 0 :(得分:2)

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

int a[10][10];

此外,

input>>row;
input>>col;

...绝对不会自动调整阵列大小。

你应该避免使用原始数组,并考虑使用矢量矢量作为2D数组:

std::vector<std::vector<int>> a;

有关动态数组的更多选择和讨论,请查看以下问题:

How do I best handle dynamic multi-dimensional arrays in C/C++