前面,我说到了用new分配内存的方式,创建变长数组,但是,new的方法有很大的弊端,如果要真正实现自定义的变长二维数组,很麻烦,还得用双层指针。
我们有没有什么简便的方法呢?答案是肯定的。
上代码:
- #include <iostream>
- #include <vector>
- using namespace std;
- void main()
- {
- int i,j;
- int H,L; //L为列数;H为行数
- int M; //M为整个矩阵的所有元素个数
- cout<<“请输入列数:”<<endl;
- cin>>L;
- cout<<“请输入行数:”<<endl;
- cin>>H;
- M=H*L;
- // vector<int> Matrix1(M+10); //声明一维变长数组
- vector<vector<int> > Matrix1(L, vector<int>(H)); //声明二维变长数组
- if ((L==H) && (L!=0) && (H!=0))
- {
-
- cout<<“请输入数组:”<<endl;
- for (i=0;i<H;i++)
- {
- for (j=0;j<L;j++)
- {
- cin>>Matrix1[i][j];
- }
- }
- cout<<endl;
- cout<<“您输入的数组如下:”;
- for (i=0;i<H;i++)
- {
- for (j=0;j<L;j++)
- {
- if(j%L==0)
- {
- cout<<endl;
- }
- cout<<Matrix1[i][j]<<” “;
- }
- }
- cout<<endl<<endl;
- }
- else
- {
- cout<<“您的输入有误!”<<endl;
-
- }
- }
复制代码
从上面可以看出,用vector可以很方便地定义变长数组,
vector<int> Matrix1(M+10); 这条语句可以定义变长一维数组;
vector<vector<int> > Matrix1(L, vector<int>(H)); 这条语句可以定义变长二维数组,其实就是vector里面套vector.
不过,在使用vector之前,需要在头部加上“#include <vector>”,不然会出错的。
用vector还有一个好处,可以不用跟new一样在后面用delete删除分配的内存。
大家来试试吧! |