C++ 创建动态二维数组
2016-07-13 19:37
302 查看
0. 预备
静态一维数组: Type p[4];
动态一维数组:Type *p = new Type
; (注意用完要 delete[] p;)
动态一维数组2: vector<Type> p(n);
1. 用new动态创建二维数组:
TYPE (*p)
= new TYPE []
;
其中,TYPE是某种类型,N是二维数组的列数。采用这种格式,列数必须指出,而行数可以不指定。p的类型是TYPE*
,即指向一个有N列元素数组的指针。
还有一种方法,可以不指定数组的列数:
int **p;
p = new int*
; //注意,int*[m]表示一个有m个元素的指针数组
for (int i = 0; i < n; i++){
p[i] = new int[m];
}
这里是将p作为一个指向指针的指针,它指向一个包含10个元素的指针数组,并且每个元素指向一个有5个元素的数组,这样就构建了一个n行m列的数组。
当数组使用完毕,释放空间的代码是:
for(int i = 0; i < n; i++){
delete[] p[i];
}
delete[] p;
2. 用vector创建二维数组:
//注意下面这一行:vector<int后两个">"之间要有空格!否则在一些老的编译器中会被认为是重载">>"。
vector<vector<int> > p(m, vector<int>(n));
静态一维数组: Type p[4];
动态一维数组:Type *p = new Type
; (注意用完要 delete[] p;)
动态一维数组2: vector<Type> p(n);
1. 用new动态创建二维数组:
TYPE (*p)
= new TYPE []
;
其中,TYPE是某种类型,N是二维数组的列数。采用这种格式,列数必须指出,而行数可以不指定。p的类型是TYPE*
,即指向一个有N列元素数组的指针。
还有一种方法,可以不指定数组的列数:
int **p;
p = new int*
; //注意,int*[m]表示一个有m个元素的指针数组
for (int i = 0; i < n; i++){
p[i] = new int[m];
}
这里是将p作为一个指向指针的指针,它指向一个包含10个元素的指针数组,并且每个元素指向一个有5个元素的数组,这样就构建了一个n行m列的数组。
当数组使用完毕,释放空间的代码是:
for(int i = 0; i < n; i++){
delete[] p[i];
}
delete[] p;
2. 用vector创建二维数组:
//注意下面这一行:vector<int后两个">"之间要有空格!否则在一些老的编译器中会被认为是重载">>"。
vector<vector<int> > p(m, vector<int>(n));
相关文章推荐
- C/C++语言参数传递----值传递、引用传递、指针传递、指针引用传递
- java的数据类型与c语言的区别
- 图解VC++版PE文件解析器源码分析
- 136. Single Number
- C++11 long long使用及输出
- boost静态链接库和c++/clr不兼容问题:未能加载文件或程序集,不是有效的Win32应用程序。
- LeetCode:Implement strStr()
- C++中的对齐方式及sizeof小结
- C/C++语言中#的神奇作用:把宏参数字符串化/贴合宏参数
- UE4学习笔记(三): 为什么使用C++替代UnrealScript?
- 收集的C/C++执行外部程序(调用外部exe程序)文章
- stringstream string转换成long型遇到的问题
- Leetcode 231. Power of Two (Easy) (cpp)
- 浅谈C语言中"#ifndef/#define/#endif"的作用
- (C++)UNION结构
- 常用算法题目3道
- 浅析长度为0的数组
- OpenSSLRSA.cpp
- 指针小解
- leetcode算法总结之字符串除空格操作