C++中二维动态数组的创建
方法1.用new / delete创建二维动态数组
代码:
#include<iostream> #include<vector> using namespace std; #define ROW 2 //行数 #define COLUMN 3 //列数 #define VALUE 1 //数组元素值 //使用new/delete创建二维数组 int main() { int **arr=new int*[ROW]; int i,j; for(i=0;i<ROW;i++) { arr[i]=new int[COLUMN]; } for(int i=0;i<ROW;i++) { for(j=0;j<COLUMN;j++) { arr[i][j]=VALUE; cout<<arr[i][j]<<" "; } cout<<endl; } for(i=0;i<ROW;i++) delete [] arr[i]; delete arr; return 0; }
方法2.使用容器创建二维动态数组
方法a.
#include<iostream> #include<vector> using namespace std; #define ROW 2 //行数 #define COLUMN 3 //列数 #define VALUE 1 //数组元素值 //使用容器创建动态二维数组 int main() { vector<vector<int>> arr(ROW);//设置二维数组的行数,定义类型为vector<int>的向量arr,该向量中含有ROW个子向量,这ROW个子向量中的数据 类型为int vector<vector<int>>::iterator it1;//定义迭代器it1,用于遍历二维数组中的行 vector<int>::iterator it2;//定义迭代器it2,用于遍历二维数组中的列 for(it1=arr.begin();it1!=arr.end();it1++) { (*it1).resize(COLUMN);//为每个行向量设置大小COLUMN for(it2=it1->begin();it2!=it1->end();++it2) { *it2=VALUE; } } cout<<"arr:"<<arr.size()<<endl;//输出的为二维数组的行数 for(it1=arr.begin();it1!=arr.end();it1++) { for(it2=it1->begin();it2!=it1->end();it2++) { cout<<*it2; } cout<<endl; } return 0; }
方法b.还可以使用vector< vector<int> > arr( ROW, vector<int>(COLUMN) );来指定二维数组的行数和列数
#include<iostream> #include<vector> using namespace std; #define ROW 2 //行数 #define COLUMN 3 //列数 #define VALUE 1 //数组元素值 int main() { vector<vector<int>> arr(ROW,vector<int>(COLUMN)); vector<vector<int>>::iterator it1; vector<int>::iterator it2; for(it1=arr.begin();it1!=arr.end();it1++) { for(it2=it1->begin();it2!=it1->end();it2++) { *it2=VALUE; } } cout<<"arr:"<<arr.size()<<endl;////输出的为二维数组的行数; for(it1=arr.begin();it1!=arr.end();it1++) { for(it2=it1->begin();it2!=it1->end();it2++) { cout<<*it2<<" "; } cout<<endl; } return 0; }
ps:既然这里提到了二维数组的创建方法,下面就顺便贴出了普通二维数组的创建方法
1.将二维数组看成一维数组进行处理
代码:
#include<iostream> #include<vector> using namespace std; #define ROW 2 //行数 #define COLUMN 3 //列数 #define VALUE 1 //数组元素值 //将二维数组当成一维数组来处理,因此普通二维数组的内存分配是连续的 int main() { int a[ROW][COLUMN]; int *p=a[0]; int i,j; for(i=0;i<ROW;i++) for(j=0;j<COLUMN;j++) p[i*COLUMN+j]=VALUE; for(i=0;i<ROW;i++) { for(j=0;j<COLUMN;j++) { cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
2.利用数组指针
代码:
#include<iostream> #include<vector> using namespace std; #define ROW 2 //行数 #define COLUMN 3 //列数 #define VALUE 1 //数组元素值 //利用数组指针创建动态二维数组 int main() { int a[ROW][COLUMN]; int (*p)[COLUMN];//数组指针,指向含有COLUMN个元素的一维数组 int i,j; p=a; for(i=0;i<ROW;i++) for(j=0;j<COLUMN;j++) *(*(p+i)+j)=VALUE; for(i=0;i<ROW;i++) { for(j=0;j<COLUMN;j++) { cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了