C++建立动态二维数组

C++建立动态二维数组主要有两种方法:

1.使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组

              
           int **b=new int*[row];       //分配一个指针数组,将其首地址保存在b中                                                    

           for(i=0;i<row;i++)             //为指针数组的每个元素分配一个数组

               b[i]=new int[col];
          

        该方法定义的动态二维数组的释放需先释放指针数组的每个元素指向的数组,然后再释放该指针数组:

           for(i=0;i<row;i++)
           {
                 delete [col]b[i];
                 b[i]=NULL;
           }
           delete [row]b;
           b=NULL;

int _tmain(int argc, _TCHAR* argv[])
{
	int row,column;
	cin>>row>>column;

	//方法一
	//申请空间
	int ** a = new int *[row];
	for(int i = 0;i < row;i++)
		a[i] = new int[column];

	//使用空间
	for(int j = 0;j < row;j++)
		for(int k = 0;k< column;k++)
			a[j][k] = rand()%100;

	for(int j = 0;j < row;j++)
	{
		cout<<endl;
		for(int k = 0;k< column;k++)
		{
			a[j][k] = rand()%100;
			cout<<a[j][k]<<"     ";
		}
	}

	//释放空间
	for(int i = 0;i < row;i++)
	{
		delete a[i];
		a[i] = NULL;
	}
	delete [row]a;
	a = NULL;	

	return 0;

}

运行结果:

2.利用vector

int _tmain(int argc, _TCHAR* argv[])
{
	int row,column;
	cin>>row>>column;

	//方法二
	//申请空间
	vector<vector<int> > a(row,vector<int>(column));

	//使用空间
	for(int j = 0;j < row;j++)
		for(int k = 0;k< column;k++)
			a[j][k] = rand()%100;

	for(int j = 0;j < row;j++)
	{
		cout<<endl;
		for(int k = 0;k< column;k++)
		{
			a[j][k] = rand()%100;
			cout<<a[j][k]<<"     ";
		}
	}		

	return 0;

}

运行结果为:

时间: 2024-09-08 07:43:30

C++建立动态二维数组的相关文章

c++中创建动态二维数组

c++ 中创建动态二维数组的程序代码 动态创建一维数组 int *arr; //it can be any other type (char, float) arr = new int[n]; //n should be integer variable 动态创建二维数组 int **arr; int N,M; cin >> N >> M; arr = new int*[N]; for(int i=0;i<N;i++) { arr[i] = new int[M]; }

c语言-双重指针定义动态二维数组

问题描述 双重指针定义动态二维数组 指针符号太多了 求解释每个指针符号 问:?二重指针 太多 求解释一下各个 p=(int **)malloc(sizeof(int *)*line); if(NULL==p) { return; } for(i=0;i<line;i++) { *(p+i)=(int *)malloc(sizeof(int)*row); if(NULL==*(p+i)) { return; } } 解决方案 首先我来看malloc做了什么,申请了一组空间,存放int型指针,返回这

c++-C++如何创建动态二维数组,然后将二维数组的数保存到一维数组中?

问题描述 C++如何创建动态二维数组,然后将二维数组的数保存到一维数组中? //此程序是我自己编的,但是不能通过,请问这是怎么回事? #include using namespace std; int main() { int n,m,k,i,j,l; cin>>n>>m>>k; int X[][]={0}; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { X[i][j]=i*j; } int Y[]={0}; for(i=1;i

Vector动态二维数组的疑问

问题描述 如下代码: Vector v=new Vector(); Vector<Vector> vv = new Vector<Vector>(); for(int i=0;i<2;i++){ for(int j=0;j<2;j++){ v.addElement("a");} vv.addElement(v); }system.out.println(vv.toString());我以为打印出的语句为:[[a,a],[a,a,a,a]]可是却打印出

C++第9周项目5 - -二维数组类Douary

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8841620 [项目5(选做)-二维数组类Douary]建立一个二维数组类Douary,使该类中有以下数据成员.成员函数及友员函数,完成矩阵的输入.输出.加.减.相等判断等操作. class Douary { public: Douary(int m, int

c++的问题-指针和二维数组的用法

问题描述 指针和二维数组的用法 int *s for(i=0;i<5;i++) for(j=0;j<5;j++) cout<<s[i][j];//error想请教各位程序员哥哥这个要怎么改啊? 解决方案 楼上的就行了,int (*s)[5][5] 也可以吧. 解决方案二: 虽然是二维的数组,其实指针的指的是第一行第一列,所以*s[i]就成了一个一维数组的指针,在c++里面你还可以试试引用,同时理解指针. 解决方案三: 首先,s在此处定义为一维,二维引用会导致错误.其次,对于s,没有

acm icpc-关于二维数组和vector的关系

问题描述 关于二维数组和vector的关系 vector p[MAX],像这样定义vector和定义一个二维数组有什么不同,有什么好处或者坏处么? 解决方案 vector是线程安全的是,这是它最大的优点.坏处就是它的速度肯定会比普通的二维数组慢. 所以如果这里变量不是多线程用到的,最好不用vector. 解决方案二: vector 是动态的,适用于数据量大小不定的情况 二维数据,定义了就固定了,无法适应动态个数的情况.如果数据的个数能确定,用二维数组当然好过 vector . 解决方案三: C

VS2013下动态数组二维数组读二进制文件的问题

问题描述 VS2013下动态数组二维数组读二进制文件的问题 int samples_to_read = 7200; uint8_t **caculate_a; int count2,count3; caculate_a = (uint8_t **)malloc(sizeof(uint8_t *)* 3); for (count1 = 0; count1<3; count1++){ //动态数组分配空间 caculate_a[count1] = (uint8_t *)malloc(sizeof(u

文件-怎样建立源程(hello.c)我用二维数组有点问题 请指教

问题描述 怎样建立源程(hello.c)我用二维数组有点问题 请指教 怎样建立源程(hello.c)我用二维数组有点问题 请指教 解决方案 你用的是什么开发环境,一般是在文件菜单下,有新建或者添加之类的选项. 解决方案二: 你是问怎么建立源程序还是问二维数组的问题呀? 建立源程序一般都是文件>新建>工程>xxx工程.建立好工程里面一般就有一个源文件了. 解决方案三: 使用的是IDE么?还是源文件编写?具体的问题可以描述更清楚点么? 解决方案四: <提问的艺术>http://b