C++二维数组new几种应用方法点评

开发 后端
我们在这篇文章中将会为大家总结几种C++二维数组new的常用方法,并对此进行详细的点评,让大家充分了解其中的优缺点。

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;

【编辑推荐】

  1. C++回调函数代码示例解读
  2. C++浅拷贝具体内容讲述
  3. C++迭代器基本内容讲述
  4. C++内存管理不同方式分析
  5. C++获取CPU信息应用经验分享
责任编辑:曹凯 来源: 博客园
相关推荐

2010-02-06 10:24:48

C++二维数组初始化

2010-03-05 14:05:02

Python二维数组

2024-04-28 09:40:28

2023-11-17 15:44:06

C++库生成二维码

2009-08-07 10:12:09

C#二维数组

2010-01-14 17:58:41

C++语言

2009-09-02 10:23:52

C#动态二维数组

2009-09-18 11:33:37

C#二维数组初始化

2009-11-16 17:41:41

PHP二维数组

2009-11-16 17:07:58

PHP二维数组

2010-07-19 13:06:13

Perl二维数组

2021-01-15 08:19:26

二维数组LeetCode

2009-09-16 17:29:10

Linq查询二维数组

2009-11-24 17:25:00

PHP二维数组排序

2010-07-13 15:15:49

Perl二维数组

2022-01-19 11:34:01

语言malloc()二维数组

2021-02-20 20:27:44

数组前缀性能

2009-11-17 09:46:31

PHP二维数组赋值

2011-12-06 16:40:45

二维码快拍二维码灵动快拍

2009-12-18 15:11:05

Ruby输出二维数组
点赞
收藏

51CTO技术栈公众号