最近再刷leetcode,快一年沒用過c++,很多語言特性需要做個筆記。
vector v vectorv(n) vectorv(n,m)
預設初始化,vector為空, size為0,表明容器中沒有元素,而且 capacity 也返回 0,意味著還沒有分配記憶體空間。這種初始化方式適用於元素個數未知,需要在程式中動態push_back()
新增的情況。
這裡也可以用v.resize(n)
等價於vectorv(n)
, 或者v.resize(n,m)
等價於vectorv(n,m)
來初始化。
前者是使用n個0來初始化,後者是使用n個m來初始化。
vector < int > v = ;
可以使用初始化陣列的方式來初始化vector,如例子所示,此時v.size() == 5
如果這時候使用v.resize(3),將會丟棄最後的4和5。
vector < int > v(v0);
使用另外乙個陣列來初始化v,注意,這裡的v0也必須是vector
也可以寫作vector < int > v = v0;
vector < int > v(*p, *q);
使用另外乙個陣列的指標來初始化v,這裡即可以使用vector的指標,也可以使用普通陣列的指標。 見例:
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
vector< vector > v = ,,,,};
二維的vector同樣也可以直接用值進行初始化。
vector < vector < int > > v
和一維陣列一樣,這裡的v的size是0。
可以先v.resize(n)來初始化乙個長度為n的二維陣列,然後使用乙個for迴圈。
for (int i = 0; i < v.size(); i++)
v[i].resize(n);
這樣v的大小就是n*n。
也可以v.resize(n, v0),使用n個一維陣列來初始化乙個二維陣列。
這裡v0可以直接使用vector(n,m)來表示,比如:
vector> v(3, vector(4,1));
vector < vector < int > > v(n,v0)
和上面v.resize()類似。
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的初始化
因為編演算法的時候經常用的stl函式庫的vector,每次初始化的時候都要搜一下,這次自己整理一下。這時候v的size為0,如果直接進行訪問 v i 會報錯。這裡可以使用 v.resize n 或者v.resize n,m 來初始化 前者是使用n個0來初始化,後者是使用n個m來初始化。可以使用初始化...