#include


vector

\(vector\)可以理解成動態數組,動態占用空間,動態釋放空間。

聲明方式

vector<int> a;
vector<int>::iterator it;

\(vector\)支持任意訪問,跟數組一樣直接調用下標。但是不支持任意插入,只支持在末端插入。\(vector\)動態占用空間和釋放空間都是二的若干次方的占用和釋放,也就是若實際占用等於最大占用,最大占用空間將翻一倍。如果實際占用空間低於最大占用空間的\(\dfrac{1}{4}\),那么最大占用空間就會變成原來的一半。所以\(vector\)比數組慢得多。接下來我們以保存\(int\)類型的數據的\(vector\)為例:

a.size()

返回\(a\)的實際長度。

a.empty()

返回一個\(bool\)類型,表示\(a\)是否為空。

a.clear()

\(a\)全部清空。

迭代器

\(vector\)的迭代器支持隨機訪問,可以讓迭代器加上一個整數,與指針的移動類似。把兩個迭代器相減會返回這兩個迭代器之間的距離。

a.begin()/a.end()

返回\(a\)的首迭代器和尾迭代器,尾迭代器為空。

a.front()/a.back()

返回\(a\)的第一個元素和最后一個元素,等價於a[0]/a[a.size()-1]。

a.push_back(x)/a.pop_back()

\(x\)插入\(a\)的尾端/彈出\(a\)尾端的元素。

遍歷a的兩種方法

for(int i=0;i<a.size();i++)
    cout<<a[i]<<endl;
for(vector<int>::iterator it=a.begin();it!=a.end();it++)
    cout<<*it<<endl;

第一種復雜度為\(O(n^2)\)
第二種方法對大多數\(stl\)都有用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM