二維vector
vector<vector <int> > ivec(m ,vector<int>(n)); //m*n的二維vector
動(dòng)態(tài)創(chuàng)建m*n的二維vector
方法一:
vector<vector <int> > ivec;
ivec.resize(m);
for(int i=0;i<m;i++) ivec[i].resize(n);
方法二:
vector<vector <int> > ivec;
ivec.resize(m,vector<int>(n));
動(dòng)態(tài)創(chuàng)建二維數(shù)組a[m][n]
C語言版:
#include<malloc.h>
int **a=(int **)malloc(m*sizeof(int *));
for(int i=0;i<m;i++)
a[i]=(int *)malloc(n*sizeof(int));
C++版:
int **a=new int*[m];
for(int i=0;i<m;i++) a[i]=new int[n];
初始化二維數(shù)組
vector<vector <int> > ivec(m ,vector<int>(n,0));
//m*n的二維vector,所有元素為0
以上均為創(chuàng)建數(shù)組,對(duì)于已經(jīng)創(chuàng)建好的數(shù)組初始化,使用resize
//注意下面這一行:vector<int后兩個(gè)">"之間要有空格!否則會(huì)被認(rèn)為是重載">>"
vector<vector <int> > ivec;//創(chuàng)建二維vector
ivec.resize(m);
for(int i=0;i<m;i++) ivec[i].resize(n,0); //確定矩陣大小為m*n,0為初始值
使用vector時(shí),要記得自己使用的是指針還是數(shù)據(jù)。如果使用指針,一定要用new 分配內(nèi)存空間,再將指針定義指向它,最后要記得delele。如果是數(shù)據(jù)則會(huì)自動(dòng)分配內(nèi)存,運(yùn)行結(jié)束后自動(dòng)收回,并不需要自己寫刪除內(nèi)存的代碼。