第18章STL動態數組類

1.std::vector

在末尾插入刪除時間固定

在中間插入刪除時間隨數組大小而異

包含頭文件<vector>

2.vector 初始化

std::vector <int> a;

std::vector <int> b(10);//大小是10

std::vector <int> c(10, 3);//是個元素,每個是3

std::vector <int> d(c);

std::vector <int> e(d.begin(), d.begin()+3);

3.插入數據

std::vector <int> a;

a.push_back(2);

a.push_back(3);

 

std::vector <int> b(3);

b[0] = 0;

b[1] = 3;

b[2] = 5;

 

vector <int> c(4, 90);

c.insert(c.begin(), 25);//把25插入到第一個位置,剩下的所有元素後移

c.insert(c.end(), 2, 33);//在最後連續插入兩個33

vector <int> d(2, 30);

d.insert(d.begin()+1, c.begin(); c.end());//在d的開始位置向後一個的地方,插入c從開始到最後的元素

4.訪問vector元素

vector <int> a;

a.push_back(2);

a.push_back(3);

a.push_back(4);

cout << a[2] << endl;

用這種方法可能會出現數組越界的問題,可以用at函數來代替

a.at(2);

vector <int>::iterator i = a.begin();

size_t c = distance(i, a.end());//計算從i到結尾的距離

5.刪除vector

vector <int> a(3, 4);

a.pop_back();//從結尾刪除一個元素

6.size capacity

size指的是vector中元素的個數,然而capacity指的是vector中最大可以保存的元素的個數。

由於vector是動態的,所以當插入的數據vector保存不下時,vector就會重新分配一塊更大的內存來保存整個數組。如果vector變動比較頻繁,就會導致頻繁的分配內存而帶來性能的影響。所以爲了減少分配內存的次數,vector在增加存儲空間重新分配內存時,會比需求的大小多分配出來一定的空間,來保證下次有新的元素增加的時候,不必去重新分配內存而提高效率。

vector <int> a(5,4);

a.size();//5

a.capacity();//5

a.push_back(1);

a.size();//6

a.capacity();//7

a.push_back(6);

a.size();//7

a.capacity();//7

7.deque

deque和vector很相似,只是它可以在開頭和結尾插入和刪除元素

deque <int> d;

d.push_back(3);

d.push_back(4);

d.push_back(5);

d.push_front(2);

d.push_front(1);

d.pop_back();

d.pop_front();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章