C vector的初始化

2021-09-20 09:59:13 字數 1886 閱讀 6042

因為編演算法的時候經常用的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的指標,也可以使用普通陣列的指標。 見例:

123

4567

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迴圈

1

2

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時,出現了乙個我無法理解的情況。

123

4567

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,意味著還沒有分配記憶體空間。這種初始化方式適用於元素個數未知,需要在程...