二维动态数组创建
2017-02-06 16:41
204 查看
众所周知,创建一维动态数组很容易,使用下面的代码便可以轻松创建
但是,如果遇到动态的二维数组应当如何创建呢?这里给出3中方法:
方法一:用一维数组去模仿二维数组,由于无论何种类型的动态数组,其在内存中都是线性的,所以可以用一维数组去模拟。
优点:处理简单,加上一个转换函数就可以实现,管理容易。
缺点:不直观。
方法二:先创建一排指针,再依次申请内存。
优点:较为直观,管理方便。
缺点:必须知道行数或列数。
方法三:用二级指针申请一维动态指针数组,再一次申请。(该过程申请到的内存单元连续)
优点:直观,使用方便。
缺点:创建、销毁都比较麻烦,需要逐层销毁。
int *Array=new int[10]; //Add some code here; delete [] Array;
但是,如果遇到动态的二维数组应当如何创建呢?这里给出3中方法:
方法一:用一维数组去模仿二维数组,由于无论何种类型的动态数组,其在内存中都是线性的,所以可以用一维数组去模拟。
优点:处理简单,加上一个转换函数就可以实现,管理容易。
缺点:不直观。
int length,width; int *Array=new int [length*width]; //Add some code here delete Array;
方法二:先创建一排指针,再依次申请内存。
优点:较为直观,管理方便。
缺点:必须知道行数或列数。
int width; int *Pointer[10]; for(int i=0;i<10;i++) { Pointer[i]=new int [width]; } //Add some code here for(int i=0;i<10;i++) { delete [] Pointer[i]; }
方法三:用二级指针申请一维动态指针数组,再一次申请。(该过程申请到的内存单元连续)
优点:直观,使用方便。
缺点:创建、销毁都比较麻烦,需要逐层销毁。
int length,widthl int **Poniter=new int*[length]; for(int i=0;i<length;i++) { Pointer[i]=new int[width]; } //Add some code here; for(int i=0;i<10;i++) { delete [] Poniter[i]; } delete [] Pointer;
相关文章推荐
- 一维动态数组和二维动态数组的创建和使用
- 动态创建二维vector数组
- 动态创建二维vector数组 C和C++ 及指针与引用的区别
- c++创建二维动态数组与内存释放问题
- 动态创建数组,一维和二维
- 动态创建二维vector数组
- c++创建二维动态数组与内存释放
- 一维动态数组和二维动态数组的创建和使用
- C++二维动态数组的创建与删除
- C++ 二维动态数组创建及越界问题
- 动态创建二维vector数组
- 使用vector创建二维动态数组,并使用sort对其进行排序
- 动态创建二维vector数组
- 动态创建二维vector数组 C和C++ 及指针与引用的区别
- 动态创建二维vector数组
- C++二维动态数组的创建与删除
- 二维动态数组的删除和创建
- C++二维动态数组的创建与删除
- 动态创建二维vector数组
- 动态创建二维vector数组 C和C++ 及指针与引用的区别