C++ 动态创建二维数组(转载)
2010-06-10 09:34
211 查看
1.
A (*ga)
= new A[m]
;
...
delete []ga;
缺点:n必须是已知
优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用)
2. A** ga = new A*[m];
for(int i = 0; i < m; i++)
ga[i] = new A
;
...
for(int i = 0; i < m; i++)
delete []ga[i];
delete []ga;
缺点:非连续储存,程序烦琐,ga为A**类型
优点:调用直观,n可以不是已知
3. A* ga = new A[m*n];
...
delete []ga;
缺点:调用不够直观
优点:连续储存,n可以不是已知
4. vector > ga;
ga.resize(m); //这三行可用可不用
for(int i = 1; i < n; i++) //
ga[i].resize(n); //
...
缺点:非连续储存,调试不够方便,编译速度下降,程序膨胀(实际速度差别不大)
优点:调用直观,自动析构与释放内存,可以调用stl相关函数,动态增长
5. vector ga;
ga.resize(m*n);
方法3,4的结合
6. 2的改进版
A** ga = new A*[m];
ga[0] = new A[m*n];
for(int i = 1; i < m; i++)
ga[i] = ga[i-1]+n;
优点:连续存储,n可以不是已知,析构方便,猜想只需delete [] ga;
A (*ga)
= new A[m]
;
...
delete []ga;
缺点:n必须是已知
优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用)
2. A** ga = new A*[m];
for(int i = 0; i < m; i++)
ga[i] = new A
;
...
for(int i = 0; i < m; i++)
delete []ga[i];
delete []ga;
缺点:非连续储存,程序烦琐,ga为A**类型
优点:调用直观,n可以不是已知
3. A* ga = new A[m*n];
...
delete []ga;
缺点:调用不够直观
优点:连续储存,n可以不是已知
4. vector > ga;
ga.resize(m); //这三行可用可不用
for(int i = 1; i < n; i++) //
ga[i].resize(n); //
...
缺点:非连续储存,调试不够方便,编译速度下降,程序膨胀(实际速度差别不大)
优点:调用直观,自动析构与释放内存,可以调用stl相关函数,动态增长
5. vector ga;
ga.resize(m*n);
方法3,4的结合
6. 2的改进版
A** ga = new A*[m];
ga[0] = new A[m*n];
for(int i = 1; i < m; i++)
ga[i] = ga[i-1]+n;
优点:连续存储,n可以不是已知,析构方便,猜想只需delete [] ga;
相关文章推荐
- c++ 使用new动态的创建指定大小的二维数组
- C++中动态创建二维数组——尴尬的不支持C99的VC
- C++动态创建二维数组和清空cin缓冲
- C++ 二维数组动态创建和内存释放
- c++动态创建二维数组
- c++用动态创建二维数组的几种方法
- C++中创建、初始化以及删除 以变量为大小的动态二维数组
- C++ 创建动态二维数组
- C++动态创建二维数组,memset()初始化二维数组
- C++创建动态二维数组
- C++动态创建二维数组和清空cin缓冲
- c++动态创建和销毁二维数组
- C++中二维数组的动态创建与处理
- c++动态二维数组创建与释放!
- C++动态创建二维数组,二维数组指针
- 一个纠结的c++动态创建二维数组不能用的问题
- c++ 动态创建二维数组
- 继续我的c++语法,,,二维数组的动态创建和释放
- C++如何动态创建二维数组
- c++动态创建二维数组