這一篇講的是vector
vector類稱作向量類,它實現了動態陣列,用於元素數量變化的物件陣列。
vector類也從0開始的下標表示元素的位置,與陣列不同的是vector物件建立後,陣列的元素個數會隨著vector物件元素個數的增大和縮小而自動變化
stl容器裡面的函式集合一般都有共性,也就是說這個有的那個一般也有(注意不同型別容器他們的函式使用後可能效果不同)
vector類常用的函式如下所示:
1.建構函式
vector()://建立乙個空vector
vector(int nsize);//建立乙個vector,元素個數為nsize
vector(int nsize,const& t);//建立乙個vector,元素個數為nsize,且值均為t
vector(const vector&);//複製建構函式
vector(begin,end);//複製[begin,end)區間內另乙個陣列的元素到vector
2.增加函式
#include
#include
using
namespace
std;
int main()
總之,擴大新元素時,如果超過當前的容量,則容量會自動擴充2倍,如果2倍容量仍不足,則繼續擴大2倍。(這個應該是看不出來的,用capacity()也看不出來,reserve可以手動預留)
#include
#include
using
namespace
std;
int main()
void push_back(const t& x);//向量尾部增加乙個元素x
iterator insert(iterator it,const t& x);//向量中迭代器指向元素前增加乙個元素x
iterator insert(iterator it,int n,const t& x);//向量中迭代器指向元素前增加n個相同元素x
iterator insert(iterator it,const_iterator first,const_iterator last);//向量中迭代器指向元素前插入另乙個相同型別向量的[first,last)間的資料
3.刪除元素
返回值是乙個迭代器,指向刪除元素下乙個元素;如果是刪除某範圍內的元素時:返回值也表示乙個迭代器,指向最後乙個刪除元素的下乙個元素;
當迭代器指向的vector被刪除以後,那麼迭代器就失效了,除非重新賦值
iterator erase(iterator it);//刪除向量中迭代器指向元素
iterator erase(iterator first,iterator last);//刪除向量中[first,last)中元素
void pop_back();//刪除向量中最後乙個元素
void clear();//清空向量中所有元素
關於刪除erase的**
#include
#include
int main()
if (iter == v1.end()) //要控制迭代器不能超過整個容器
}for (iter = v1.begin(); iter != v1.end(); iter++)
}
4.遍歷函式
reference at(int pos);//返回pos位置元素的引用
reference front();//返回首元素的引用
reference back();//返回尾元素的引用
iterator begin();//返回向量頭指標,指向第乙個元素
iterator end();//返回向量尾指標,指向向量最後乙個元素的下乙個位置
reverse_iterator rbegin();//反向迭代器,指向最後乙個元素
reverse_iterator rend();//反向迭代器,指向第乙個元素之前的位置
5.判斷函式
bool empty() const;//判斷向量是否為空,若為空,則向量中無元素
6.大小函式
int size() const;//返回向量中元素的個數
int capacity() const;//返回當前向量所能容納的最多數目
int max_size() cosnt;//返回最大可允許的vector元素數量值
7.其他函式
void swap(vector&);//交換兩個同型別向量的資料
void assign(int n,const t& x);//設定向量中第n個元素的值為x
void assign(const_iterator first,const_iterator last);
向量中[first,last)中元素設定成當前向量元素
vector迭代器失效的幾種情況
1.當插入(push_back)乙個元素後,end操作返回的迭代器肯定失效。
3.當進行刪除操作(erase,pop_back)後,指向刪除點的迭代器全部失效;指向刪除點後面的元素的迭代器也將全部失效。
STL順序容器 vector
vector是乙個線性順序結構。相當於陣列,但其大小可以不預先指定,並且自動擴 展。它可以像陣列一樣被操作,由於它的特性我們完全可以將vector 看作動態數 組。在建立乙個vector 後,它會自動在記憶體中分配一塊連續的記憶體空間進行資料 儲存,初始的空間大小可以預先指定也可以由vector 預...
STL序列容器 vector
二 vector vector容器是包含 t 型別元素的序列容器,和 array容器相似,不同的是 vector容器的大小可以自動增長,從而可以包含任意數量的元素 因此型別引數 t 不再需要模板引數 n。只要元素個數超出 vector 當前容量,就會自動分配更多的空間。只能在容器尾部高效地刪除或新增...
STL容器 Vector用法
標頭檔案 include 建立 vectorv 尾部插入元素 v.push back a 在第i 1個元素前面插入a v.insert v,begin i 刪除第i 1個元素 v.erase v,begin i 刪除區間 i,j 的元素 v.erase v.begin i,v.end j 下標訪問第...