• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

转载:C++二维数组new

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

来源: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;


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
发布一款基于C#的网络爬虫程序发布时间:2022-07-14
下一篇:
c#socketselect模型代码(u3d)发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap