C++动态数组
一: 一维数组初始化
标准方式1:int value[100]; //value[i]的值不定,因为没有初始化;
标准方式2:int value[100] = {1,2,3}; //value[0],value[1],value[2]值是1,2,3,没有定义的初始化为0
指针方式: int * value = new int[n]; //未初始化
删除数组空间:delete []value;
二:二维数组初始化:
标准方式1:int value[100][100]; //value[i]的值不定,因为没有初始化;
标准方式2:int value[100][100] = {{1,1},{2,2},{3,3}}; //value[0][0,1],value[1][0,1],value[2][0,1]初始化,没有定义初始化为0
三:建立二维动态数组数组
这里说的动态数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组
1.使用指针,分配一个指针数组,将其首地址保存在num中,然后再为指针数组的每个元素分配一个数组
1 int j = 3; //定义第二维数组的个数 2 int**num = new int *[longs]; //分配一个指针数组,将其首地址保存在num中; 3 for(int i = 0; i < longs; i++){ //为指针数组的每个元素分配一个数组; 4 num[i] = new long[j]; 5 } 6 //用这种方法定义的动态二维数组的释放需先释放指针数组的每个元素指向的数组,然后再释放该指针数组; 7 for(int i = 0; i < longs; i++){ 8 delete [j]num[i]; 9 num[i]=NULL; 10 } 11 delete [longs]num; 12 num=NULL;
2.利用vector
1 int main() { 2 int row,column; 3 cin>>row>>column; 5 //申请空间 6 vector<vector<int> > a(row,vector<int>(column)); 7 //使用空间 8 for(int j = 0;j < row; j++) { 9 for(int k = 0;k < column; k++) { 10 a[j][k] = rand()%100; 11 } 12 } 13 for(int j = 0;j < row;j++) { 14 cout<<endl; 15 for(int k = 0;k< column;k++) { 16 a[j][k] = rand()%100; 17 cout<<a[j][k]<<" "; 18 } 19 } 20 return 0; 21 }