C++ - new delete 高维数组小结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++ - new delete 高维数组小结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1616字,纯文字阅读大概需要3分钟。
内容图文
![C++ - new delete 高维数组小结](/upload/InfoBanner/zyjiaocheng/1230/0ab484a49e384ec0bdf7e2fe7b96afde.jpg)
借鉴:http://www.cnblogs.com/beyondstorm/archive/2008/08/26/1276278.html
http://www.cnblogs.com/platero/archive/2010/12/18/1910057.html
高维数组的动态申请和释放与二维数组的类似,所以这里只演示的是二维数组的动态申请和释放。
先来个大众版的:
1 #include <iostream> 2 3usingnamespace std; 4 5int main(void) 6{ 7int **p; 8 9 p = newint*[3]; 1011for (int i = 0; i < 3; i++) 12 p[i] = newint[4]; 1314for (int i = 0; i < 3; i++) { 15for (int j = 0; j < 4; j++) 16 p[i][j] = i+j; 17 } 1819for (int i = 0; i < 3; i++) 20 delete []p[i]; 2122 delete []p; 2324return0; 25 }
然后是各种new:
1.
A (*ga)[n] = new A[m][n];
...
delete []ga;
缺点:n必须是已知
优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用)
2. A** ga = new A*[m];
for(int i = 0; i < m; i++)
ga[i] = new A[n];
...
for(int i = 0; i < m; i++)
delete []ga[i];
delete []ga;
缺点:非连续储存,程序烦琐,ga为A**类型
优点:调用直观,n可以不是已知
3. A* ga = new A[m*n];
...
delete []ga;
缺点:调用不够直观
优点:连续储存,n可以不是已知
4. vector;
ga.resize(m); //这三行可用可不用
for(int i = 1; i < n; i++) //
ga[i].resize(n); //
...
缺点:非连续储存,调试不够方便,编译速度下降,程序膨胀(实际速度差别不大)
优点:调用直观,自动析构与释放内存,可以调用stl相关函数,动态增长
5. vector' ref='nofollow'> > ga;
ga.resize(m); //这三行可用可不用
for(int i = 1; i < n; i++) //
ga[i].resize(n); //
...
缺点:非连续储存,调试不够方便,编译速度下降,程序膨胀(实际速度差别不大)
优点:调用直观,自动析构与释放内存,可以调用stl相关函数,动态增长
5. vector; i++)
ga[i] = ga[i-1]+n;
优点:连续存储,n可以不是已知,析构方便,猜想只需delete [] ga;' ref='nofollow'> ga;
ga.resize(m*n);
方法3,4的结合
6. 2的改进版
A** ga = new A*[m];
ga[0] = new A[m*n];
for(int i = 1; i < m; i++)
ga[i] = ga[i-1]+n;
优点:连续存储,n可以不是已知,析构方便,猜想只需delete [] ga;
问题:
1.怎么进行多维数组的声明和初始化?
2.是否能够动态分配多维数组,怎么样正确析构?
3.怎么理解这些操作?
原文:http://www.cnblogs.com/sineatos/p/4184250.html
内容总结
以上是互联网集市为您收集整理的C++ - new delete 高维数组小结全部内容,希望文章能够帮你解决C++ - new delete 高维数组小结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。