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

转载:C++ 二维数组new的更多相关文章

  1. C/C++怎样传递二维数组,转载自CSDN

    用二维数组作为参数传递(用二维数组处理矩阵),但是希望接受传递二维数组参数的函数可以处理任意维度的数组(希望矩阵的行数和列数都是不固定的). [以下转帖] ---------------------- ...

  2. <转载>c++中new一个二维数组

    原文连接 在c++中定义一个二维数组时有多种方式,下面是几种定义方式的说明:其中dataType 表示数据类型,如int  byte  long... 1.dataType (*num)[n] = n ...

  3. [转载]C++二维动态数组memset()函数初始化

    来源:https://blog.csdn.net/longhopefor/article/details/20994919 先说说memset函数: void *memset(void *s,int ...

  4. 剑指Offer面试题:2.二维数组中的查找

    一.题目:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  5. C语言中如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...

  6. php对二维数组进行相关操作(排序、转换、去空白等)

    php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04   这篇文章主要介绍了php对二维数组进行相关操作,包括php对 ...

  7. C++中动态申请二维数组并释放方法

    C/C++中动态开辟一维.二维数组是非常常用的,以前没记住,做题时怎么也想不起来,现在好好整理一下. C++中有三种方法来动态申请多维数组 (1)C中的malloc/free (2)C++中的new/ ...

  8. c指针与数组,传参问题,指针数组与数组指针的区别,二维数组动态内存分配

    一 数组的结构:顺序存储,看谭浩强中的图,牢记 1.数组名指代一种数据结构:数组 现在可以解释为什么第1个程序第6行的输出为10的问题,根据结论1,数组名str的内涵为一种数据结构,即一个长度为10的 ...

  9. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

随机推荐

  1. 学习 Spring (十六) AOP API

    Spring入门篇 学习笔记 Spring AOP API 是 Spring 1.2 历史用法,现在仍然支持 这是 Spring AOP 基础,现在的用法也是基于历史的,只是更简便了 Pointcut ...

  2. python基础成长之路三

    1,基础数据类型 总览 int :数字  用于计数,计算,运算等...1 , 2 , 3  , 100 , ... str :字符串  用户少量的数据储存,便于操作   "这就是字符串&qu ...

  3. 大学jsp实验七--JavaBean在JSP中的应用

    值bean的应用 (1)若有如下图所示的两个JSP页面,在第一个的页面的表单中填写相应内容,提交后再显示用户的提交信息.使用JavaBean的方式实现上述效果,请写出相应的代码. bean文件:Tes ...

  4. [HDU5536] Chip Factory

    传送门:>Here< 题意:给出一个长度为N的序列,求$Max\{ (a_i + a_j) ⊕ a_k \}$ (i,j,k均不相同)  ($N \leq 1000$) 解题思路 既然$O ...

  5. 【Gym - 100812G 】Short Path (SPFA)

    BUPT2017 wintertraining(15) #7B 题意 n个点m条无向有权边(2 ≤ n ≤ 10^5, 1 ≤ m ≤ 10^5),每个点标记了0或1,求所有1中,最近的两个1的下标及 ...

  6. Android 9.png图片的制作方法

    在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式".9.png".这种图片是用于Android开发的一种 ...

  7. 【BZOJ4419】[SHOI2013]发微博(???)

    [BZOJ4419][SHOI2013]发微博(???) 题面 BZOJ 洛谷 题解 一道\(easy\),每个点维护一下要给周围的点加上多上,如果额外连了一个点进来就给他把标记减掉,如果删掉了一条边 ...

  8. 每天一个Linux命令(04):tcpdump命令

    tcpdump命令 是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析 语法 tcpdump(选项) 选项 -a:尝试将网络和广播 ...

  9. centos7安装Jenkins更改默认端口并配置Ldap服务器进行用户认证

    应用环境:Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作.   Jenkins官网:https://jenkins.io/ 测试环境:一台Centos ...

  10. Typescript学习笔记(三)变量声明及作用域

    ts的变量声明有var,let和const,这尼玛完全跟es6一样嘛.就稍微介绍一下. 大多数js开发者对于var很熟悉了,原生js里没有块级作用域,只有函数作用域和全局作用域,还存在var的变量提升 ...