转载:C++ 二维数组new

来源:http://developer.51cto.com/art/201002/183127.htm

C++编程语言中有一种叫做new的二维数组,它的应用方式比较灵活,可以有多种方法来帮助我们实现一些特定功能。在这里我们将会总结几种C++二维数组new的应用方式,来进行逐一的点评。

C++二维数组new应用方式一:

  1. A (*ga)[n] = new A[m][n];   
  2. ...   
  3. delete []ga;  

缺点:n必须是已知

优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用)

C++二维数组new应用方式二:

  1. A** ga = new A*[m];   
  2. for(int i = 0; i m; i++)   
  3. ga[i] = new A[n];   
  4. ...   
  5. for(int i = 0; i m; i++)   
  6. delete []ga[i];   
  7. delete []ga;  

缺点:非连续储存,程序烦琐,ga为A**类型

优点:调用直观,n可以不是已知

C++二维数组new应用方式三:

  1. A* ga = new A[m*n];   
  2. ...   
  3. delete []ga;  

缺点:调用不够直观

优点:连续储存,n可以不是已知

C++二维数组new应用方式四:

  1. vector > ga;   
  2. ga.resize(m); //这三行可用可不用   
  3. for(int i = 1; i n; i++) //   
  4. ga[i].resize(n); //   
  5. ...  

缺点:非连续储存,调试不够方便,编译速度下降,程序膨胀(实际速度差别不大)

优点:调用直观,自动析构与释放内存,可以调用stl相关函数,动态增长

C++二维数组new应用方式五:

  1. vector ga;   
  2. ga.resize(m*n);  

方法3,4的结合

C++二维数组new应用方式六:

2的改进版

  1. A** ga = new A*[m];   
  2. ga[0] = new A[m*n];   
  3. for(int i = 1; i m; i++)   
  4. ga[i] = ga[i-1]+n;  

优点:连续存储,n可以不是已知,析构方便,猜想只需delete [] ga;

原文链接: https://www.cnblogs.com/yinwei-space/p/5797946.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    转载:C++ 二维数组new

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/239187

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午6:05
下一篇 2023年2月13日 下午6:05

相关推荐