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;

  • 相关阅读:
    开发用于异构环境的可生存云多机器人框架
    RVIZ实现模拟控制小车
    airsim 无法打开包括文件corecrt.h
    RoboWare Studio 安装
    Rosserial实现Windows-ROS交互操作
    nuix .pl文件运行
    OSError:[Errno 13] Permission denied:'my_library' 问题解决方法
    ros 运行rviz时出现 QXcbConnection: XCB error: 148 错误 解决方法
    在linux下一般用scp这个命令来通过ssh传输文件
    unix下命令窗分屏工具
  • 原文地址:https://www.cnblogs.com/yinwei-space/p/5797946.html
Copyright © 2011-2022 走看看