Vector是動態空間,隨着元素的加入,它的內部機制會自動擴充空間以容納新元素。數據結構
注意其擴容方式不是在原基礎上增長空間,而是從新以必定倍數分配一塊更大的新空間,具體倍數由不一樣編譯器決定,大約1.5~2倍。函數
vector<T>::iterator it
一個vector的容量永遠大於或等於其大小,一旦容量等於大小,即是滿載,下次再有新增元素,整個vector容器就得另覓居所。
spa
所謂動態增長大小,並非在原空間以後續接新空間(由於沒法保證原空間以後尚有可配置的空間),而是一塊更大的內存空間,而後將原數據拷貝新空間,並釋放原空間。所以,對vector的任何操做,一旦引發空間的從新配置,指向原vector的全部迭代器就都失效了。code
vector<T> v; //採用模板實現類實現,默認構造函數
vector(v.begin(), v.end());//將v[begin(), end())區間中的元素拷貝給自己。
vector(n, elem);//構造函數將n個elem拷貝給自己。
vector(const vector &vec);//拷貝構造函數。 //例子 使用第二個構造函數 咱們能夠...
int arr[] = {2,3,4,1,9}; vector<int> v1(arr, arr + sizeof(arr) / sizeof(int));
assign(beg, end);//將[beg, end)區間中的數據拷貝賦值給自己。 beg,end是迭代器
assign(n, elem);//將n個elem拷貝賦值給自己。
vector& operator=(const vector &vec);//重載等號操做符
swap(vec);// 將vec與自己的元素互換。
size();//返回容器中元素的個數
empty();//判斷容器是否爲空
resize(int num);//從新指定容器的長度爲num,若容器變長,則以默認值填充新位置。若是容器變短,則末尾超出容器長度的元素被刪除。
resize(int num, elem);//從新指定容器的長度爲num,若容器變長,則以elem值填充新位置。若是容器變短,則末尾超出容器長>度的元素被刪除。
capacity();//容器的容量
reserve(int len);//容器預留len個元素長度,預留位置不初始化,元素不可訪問。
at(int idx); //返回索引idx所指的數據,若是idx越界,拋出out_of_range異常。
operator[];//返回索引idx所指的數據,越界時,運行直接報錯
front();//返回容器中第一個數據元素
back();//返回容器中最後一個數據元素
insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count個元素ele.
push_back(ele); //尾部插入元素ele
pop_back();//刪除最後一個元素
erase(const_iterator start, const_iterator end);//刪除迭代器從start到end之間的元素
erase(const_iterator pos);//刪除迭代器指向的元素
clear();//刪除容器中全部元素