參考了
可通過下列**直接建立m*n的二維vector
vector> ivec(m ,vector(n)); //m*n的二維vector
動態建立m*n的二維vector
方法一:
vector> ivec;
ivec.resize(m);
for(int i=0;i> ivec;
ivec.resize(m,vector(n));
動態建立二維陣列a[m][n]
c語言版:
建立**:
#includeint **a=(int **)malloc(m*sizeof(int *));
for(int i=0;i釋放**:
for (i=0;i
c++版:
建立**:
int **a=new int*[m];
for(int i=0;i釋放**:
for(int i = 0; i != m; i++)
delete p;
初始化二維陣列:
int a[2][2] = ,
};
初始化二維vector:
如果全初始化為0:
vector> ivec(m ,vector(n,0)); //m*n的二維vector,所有元素為0
也可以用
vector> a;
a.resize(m, vector(n, 0));
注意:上例中n固定。但二維vector的第二維的size()並不一定要是常數,如下例中的三個vector組成的二維vector,其大小分別為1,2,3。這一點跟c的二維陣列不一樣。
vector> vecset;
for(int i = 1; i <= 3; i++)
vecset.push_back(vector(i,0));
如果初始化為不同值:
vector> a , };
注意與上面的c的二維陣列區別,這裡a的後面加不加'='號都可以。
如果c++的class裡面定義了vector,可以在class的constructor裡面初始化,比如:
class myclass
...private:
vectorv1, v2;
}
如果想遍歷二維vector(按vector乙個乙個來),可以用c++ 11的auto,比如
#include #include using namespace std;
int main() , };
for (const auto& inner : v)
} cout << endl;
return 0;
}
定義乙個二維陣列,第一維有26個,但第二維不定。
vector> vecs(26, vector());
三維vector怎麼定義呢? 乙個例子如下
vector> > dp (n, vector>(n, vector(n + 1, false)));
二維vector的初始化如下:
假設已經有vector> board;
vector> mask(board.size(), vector(board[0].size(), true));
下面是一些關於c/c++ 二維陣列初始化的資料,引用自
二維陣列的初始化可以按行分段賦值,也可按行連續賦值。
例如,對於陣列 a[5][3],按行分段賦值應該寫作:
int a[5][3]=, , , , };按行連續賦值應該寫作:
int a[5][3]=;這兩種賦初值的結果是完全相同的。
對於二維陣列的初始化還要注意以下幾點:
1) 可以只對部分元素賦值,未賦值的元素自動取「零」值。例如:
int a[3][3] = , , };是對每一行的第一列元素賦值,未賦值的元素的值為 0。賦值後各元素的值為:
1 0 0
2 0 0
3 0 0
再如:
int a[3][3] = , , };賦值後各元素的值為:
0 1 0
0 0 2
3 0 0
2) 如果對全部元素賦值,那麼第一維的長度可以不給出。例如:
int a[3][3] = ;可以寫為:
int a[3] = ;3) 二維陣列可以看作是由一維陣列巢狀而成的;如果乙個陣列的每個元素又是乙個陣列,那麼它就是二維陣列。當然,前提是各個元素的型別必須相同。根據這樣的分析,乙個二維陣列也可以分解為多個一維陣列,c語言允許這種分解。
例如,二維陣列a[3][4]
可分解為三個一維陣列,它們的陣列名分別為 a[0]、a[1]、a[2]。
這三個一維陣列可以直接拿來使用。這三個一維陣列都有 4 個元素,比如,一維陣列 a[0] 的元素為 a[0][0]、a[0][1]、a[0][2]、a[0][3]。
C 二維vector使用
在stl中vector這一容器,無論是在封裝程度還是記憶體管理等方面都由於傳統c 中的陣列。本文主要是關於使用vector初始化 遍歷方面的內容。其他二維的思想也是類似的。int p p new int 10 注意,int 10 表示乙個有10個元素的指標陣列 for int i 0 i 10 i ...
二維vector 的建立
在很多時候,類中二維陣列的維度往往無法提前知道,因此需要動態地分配空間。使用new運算子是其中的乙個解決方案,但是操作不當往往會造成記憶體溢位 洩漏。使用stl的vector可以避免這個麻煩。例如,我在乙個類中定義了乙個資料成員a為二維int型別vector cpp view plain copy ...
二維向量 vector
又學一招!二維向量vector 在vc下的使用技巧。隨著對c 學習的逐步加深,發現stl確實是個好咚咚。vector是我用到的第乙個stl容器,它一直吸引我學習和使用stl。但當我用到二維的vector時 比如 vector 卻發現似乎不能用。我用的vc6就是不認它,竟報 error c2146 s...