zoukankan      html  css  js  c++  java
  • 转载: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;

  • 相关阅读:
    android dumpsys meminfo 详解
    效率思维模式与Zombie Scrum
    Mac中Run快捷键修改
    airtest+pytest实战教程05—登录智学网app
    对select函数的理解
    Appium定位元素
    Hack The Box——ServMon
    Oracle DG常用视图与运维护常用操作
    Oracle EBS订单的流程(Order->AR)
    财经法规与会计职业道德
  • 原文地址:https://www.cnblogs.com/yinwei-space/p/5797946.html
Copyright © 2011-2022 走看看