因為編演算法的時候經常用的stl函式庫的vector,每次初始化的時候都要搜一下,這次自己整理一下。
這時候v的size為0,如果直接進行訪問 v[i] 會報錯。
這裡可以使用 v.resize(n),或者v.resize(n, m) 來初始化
前者是使用n個0來初始化,後者是使用n個m來初始化。
可以使用初始化陣列的方式來初始化vector,如例子所示,此時v.size() == 5
如果這時候使用v.resize(3),將會丟棄最後的4和5。
注意,我是用的是vs2017,可能之前的編譯器不支援這個初始化。
類似於resize的用法
使用另外乙個陣列來初始化v,注意,這裡的v0也必須是vector
也可以寫作vector < int > v = v0;
使用另外乙個陣列的指標來初始化v,這裡即可以使用vector的指標,也可以使用普通陣列的指標。 見例:
1234567
891011
int a[3] = ;vectorv = ;
vectorv2(a, a+2);
for (int i = 0; i < v2.size(); i++)
cout << v2[i] << " "; //輸出為1 2
cout << endl;
vectorv3(v.begin()+1, v.end() - 1);
for (int i = 0; i < v3.size(); i++)
cout << v3[i] << " "; //輸出為2 3
和一維陣列一樣,這裡的v的size是0。
可以先v.resize(n)來初始化乙個長度為n的二維陣列,然後使用乙個for迴圈
12
for (int i = 0; i < v.size(); i++)v[i].resize(n);
這樣v的大小就是n*n。
也可以v.resize(n, v0),使用n個一維陣列來初始化乙個二維陣列。
這裡v0可以直接使用vector(n,m)來表示,比如
1
vector> v(3, vector(4,1));
3*4大小的二維陣列,值全為1.
這個和resize的用法一樣。
和一維陣列類似,可以使用vector指標
123
vectorv0 = ;vector> v1(4, v0);
vector> v(v1.begin()+1, v1.end()-1); //此時的v是 ,}
如果使用乙個二維陣列指標來初始化vector時,出現了乙個我無法理解的情況。
1234567
891011
1213
1415
16
int a[4][5] = ,,, };vector> v(a[0], a[1]);
for (int i = 0; i < v.size(); i++)
/*此時的輸出為
00 0
0 0 0
0 0 0 0
*/
這個問題暫留。
這樣就初始化了乙個ijk的三維陣列,當然也可以像前面二維陣列的resize一樣,指定初始化的值,這裡就不多贅述了。
-------------end of file
thanks for reading-------------
C vector的初始化
因為編演算法的時候經常用的stl函式庫的vector,每次初始化的時候都要搜一下,這次自己整理一下。這時候v的size為0,如果直接進行訪問 v i 會報錯。這裡可以使用 v.resize n 或者v.resize n,m 來初始化 前者是使用n個0來初始化,後者是使用n個m來初始化。可以使用初始化...
C vector的初始化
因為編演算法的時候經常用的stl函式庫的vector,每次初始化的時候都要搜一下,這次自己整理一下。這時候v的size為0,如果直接進行訪問 v i 會報錯。這裡可以使用 v.resize n 或者v.resize n,m 來初始化 前者是使用n個0來初始化,後者是使用n個m來初始化。可以使用初始化...
C vector 的初始化
最近再刷leetcode,快一年沒用過c 很多語言特性需要做個筆記。vector v vectorv n vectorv n,m 預設初始化,vector為空,size為0,表明容器中沒有元素,而且 capacity 也返回 0,意味著還沒有分配記憶體空間。這種初始化方式適用於元素個數未知,需要在程...