首页 > 代码库 > <细节>动态创建二维数组
<细节>动态创建二维数组
今天在做一个关于数组相似度的题目,需要动态创建二维数组,刚开始想用常规的int a[ ][ ]建立,但很快就发现行不通,这种常规数组必须在编译前指定数组的维数,而这个题目在的维数必须在运行中计算得出,于是想到采用new来建立动态二维数组,这个方法行得通,但是很麻烦,也不太利于理解,后面决定采用vector< vector< int > >方法来创建,简单了不少,下面对两种方法都进行一下总结。
1.使用vector创建二维数组
#include <iostream>#include <vector>using namespace std;void main(){<span style="white-space:pre"> </span><span style="white-space:pre"> </span>//分配内存<span style="white-space:pre"> </span>int A,B;<span style="white-space:pre"> </span>cout<<"请输入数组的维数:";<span style="white-space:pre"> </span>cin>>A>>B;<span style="white-space:pre"> </span>vector< vector<int> > tmp(A);<span style="white-space:pre"> </span>for(vector<int>::size_type i=0; i<A; i++)<span style="white-space:pre"> </span>{<span style="white-space:pre"> </span>tmp[i].resize(B);<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>//初始化<span style="white-space:pre"> </span>int num=0;<span style="white-space:pre"> </span>for( vector<int>::size_type i=0; i<A; i++)<span style="white-space:pre"> </span>for( vector<int>::size_type j=0; j<B; j++)<span style="white-space:pre"> </span>{<span style="white-space:pre"> </span>tmp[i][j] = num;<span style="white-space:pre"> </span>num++;<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>//输出<span style="white-space:pre"> </span>for(vector<int>::size_type i=0; i<A; i++)<span style="white-space:pre"> </span>{<span style="white-space:pre"> </span>for(vector<int>::size_type j=0; j<B; j++)<span style="white-space:pre"> </span>{<span style="white-space:pre"> </span>cout<<tmp[i][j]<<' ';<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>cout<<endl;<span style="white-space:pre"> </span><span style="white-space:pre"> </span>}}
其中创建二维数组的核心程序为:
//二维数组初始化方式 vector< vector<int> > tmp(A); for(vector<int>::size_type i=0; i<A; i++) { tmp[i].resize(B); }上述代码也可以简化为:
//二维数组初始化方式 vector< vector<int> > tmp( A, vector<int>(B) );
2.使用指针和new来创建二维数组
#include <iostream>using namespace std;void main(){<span style="white-space:pre"> </span>//分配内存<span style="white-space:pre"> </span>int m,n;<span style="white-space:pre"> </span>cout<<"请输入数组的维数:";<span style="white-space:pre"> </span>cin>>m>>n;<span style="white-space:pre"> </span>int **p = new int *[m];<span style="white-space:pre"> </span>for(int i=0; i<m; i++)<span style="white-space:pre"> </span>{<span style="white-space:pre"> </span>p[i] = new int[n];<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>//初始化<span style="white-space:pre"> </span>int num=0;<span style="white-space:pre"> </span>for(int i=0; i<m; i++)<span style="white-space:pre"> </span>for(int j=0; j<n; j++)<span style="white-space:pre"> </span>{<span style="white-space:pre"> </span>p[i][j] = num;<span style="white-space:pre"> </span>num++;<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>//输出<span style="white-space:pre"> </span>for(int i=0; i<m; i++)<span style="white-space:pre"> </span>{<span style="white-space:pre"> </span>for(int j=0; j<n; j++)<span style="white-space:pre"> </span>{<span style="white-space:pre"> </span>cout<<p[i][j]<<' ';<span style="white-space:pre"> </span>cout<<endl;<span style="white-space:pre"> </span>}}
其中创建二维数组的核心函数为:
//分配内存 int m,n; cin>>m>>n; int **p = new int *[m]; for(int i=0; i<m; i++) { <span style="white-space:pre"> </span>p[i] = new int[n]; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。