C++中二维数组的动态分配
2014-06-01 16:11
141 查看
C++中二维数组的动态分配
作者: 来源:csdn博客 公布者:admin
时间:2009-04-23 13:55:03 点击:115
C++中一维数组的动态分配十分经常使用,但C++刚開始学习的人可能非常少想过要使用动态分配的二维数组,或者自觉得二维数组就是这样分配的(至少我自己開始的时候就这样觉得):int m=2, n=3; int** array2D=new int[m]
;。这全然是我们写多了像int n=4; int* array=new int
;这种语句留下的后遗症,纯粹是由于惯性太大刹都刹不住,就像某同学学完“一二三”要写“万”一样。
事实往往不是这么简单,看以下的正确方法就知道了:
#include <iostream>
using std::cout;
using std::endl;
int main() {
int i, j;
int m=2, n=3;
//分配行指针数组
int** array2D=new int*[m];
//为每一行分配空间
for(i=0; i<m; ++i) {
array2D[i]=new int
;
}
//能够略微測试一下
for(i=0; i<m; ++i) {
for(j=0; j<n; ++j) {
array2D[i][j]=i+j;
}
}
for(i=0; i<m; ++i) {
for(j=0; j<n; ++j) {
cout<<array2D[i][j]<<"/t";
}
cout<<endl;
}
//删除每一行分配的空间
for(i=0; i<m; ++i) {
delete[] array2D[i];
}
//删除行指针数组
delete[] array2D;
return EXIT_SUCCESS;
}
利用C++二维数组动态分配的特点,我们还能够分配出用静态数组无法实现的不等长二维数组,想要多少就分配多少。看以下的样例:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main() {
int i, j;
int m=3;
int n[3]={1, 2, 3};
//行指针数组
int** array2D=new int*[m];
//每行分配不一样多的空间
for(i=0; i<m; ++i) {
array2D[i]=new int[n[i]];
}
//測试一下
for(i=0; i<m; ++i) {
for(j=0; j<n[i]; ++j) {
array2D[i][j]=j+1;
}
}
for(i=0; i<m; ++i) {
for(j=0; j<n[i]; ++j) {
cout<<array2D[i][j]<<"/t";
}
cout<<endl;
}
//删除分配的空间
for(i=0; i<m; ++i) {
delete[] array2D[i];
}
delete[] array2D;
return EXIT_SUCCESS;
}
当然,假设你想一劳永逸,不想这么麻烦的分配来分配去,那么去写个类模板吧,在类模板中重载数组下标运算符,你就能够像使用静态数组一样使用你的类了。
作者: 来源:csdn博客 公布者:admin
时间:2009-04-23 13:55:03 点击:115
C++中一维数组的动态分配十分经常使用,但C++刚開始学习的人可能非常少想过要使用动态分配的二维数组,或者自觉得二维数组就是这样分配的(至少我自己開始的时候就这样觉得):int m=2, n=3; int** array2D=new int[m]
;。这全然是我们写多了像int n=4; int* array=new int
;这种语句留下的后遗症,纯粹是由于惯性太大刹都刹不住,就像某同学学完“一二三”要写“万”一样。
事实往往不是这么简单,看以下的正确方法就知道了:
#include <iostream>
using std::cout;
using std::endl;
int main() {
int i, j;
int m=2, n=3;
//分配行指针数组
int** array2D=new int*[m];
//为每一行分配空间
for(i=0; i<m; ++i) {
array2D[i]=new int
;
}
//能够略微測试一下
for(i=0; i<m; ++i) {
for(j=0; j<n; ++j) {
array2D[i][j]=i+j;
}
}
for(i=0; i<m; ++i) {
for(j=0; j<n; ++j) {
cout<<array2D[i][j]<<"/t";
}
cout<<endl;
}
//删除每一行分配的空间
for(i=0; i<m; ++i) {
delete[] array2D[i];
}
//删除行指针数组
delete[] array2D;
return EXIT_SUCCESS;
}
利用C++二维数组动态分配的特点,我们还能够分配出用静态数组无法实现的不等长二维数组,想要多少就分配多少。看以下的样例:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main() {
int i, j;
int m=3;
int n[3]={1, 2, 3};
//行指针数组
int** array2D=new int*[m];
//每行分配不一样多的空间
for(i=0; i<m; ++i) {
array2D[i]=new int[n[i]];
}
//測试一下
for(i=0; i<m; ++i) {
for(j=0; j<n[i]; ++j) {
array2D[i][j]=j+1;
}
}
for(i=0; i<m; ++i) {
for(j=0; j<n[i]; ++j) {
cout<<array2D[i][j]<<"/t";
}
cout<<endl;
}
//删除分配的空间
for(i=0; i<m; ++i) {
delete[] array2D[i];
}
delete[] array2D;
return EXIT_SUCCESS;
}
当然,假设你想一劳永逸,不想这么麻烦的分配来分配去,那么去写个类模板吧,在类模板中重载数组下标运算符,你就能够像使用静态数组一样使用你的类了。
相关文章推荐
- 如何在C++中动态分配二维数组
- C++学习笔记(16)——动态二维数组的分配与释放
- 如何在C/C++中动态分配二维数组
- 如何在C/C++中动态分配二维数组
- c\c++二维数组动态分配和释放
- 如何在C++中动态分配二维数组
- 如何在C/C++中动态分配二维数组
- 如何在C/C++中动态分配二维数组
- 如何在C/C++中动态分配二维数组
- C++中动态分配二维数组
- C/C++二维数组的动态分配及参数传递
- C++中动态分配二维数组的方法
- C++中动态分配二维数组的方法(zz)
- C/C++二维数组的动态分配及参数传递 .
- 【C++基础学习】二维数组的动态分配及参数传递
- 如何在C++中动态分配二维数组
- 在C++中动态分配二维数组
- C++中二维数组的动态分配
- 如何在C++中动态分配二维数组
- 如何在C/C++中动态分配二维数组