vector是stl中最常見的容器,它是一種順序容器,支援隨機訪問。 vector是一塊連續分配的記憶體,從資料安排的角度來講,和陣列極其相似, 不同的地方就是:陣列是靜態分配空間,一旦分配了空間的大小,就不可再改變了; 而vector是動態分配空間,隨著元素的不斷插入,它會按照自身的一套機制不斷擴充自身的容量。
vector的擴充機制:按照容器現在容量的一倍進行增長。 vector容器分配的是一塊連續的記憶體空間,每次容器的增長,並不是在原有連續的記憶體空間後再進行簡單的疊加, 而是重新申請一塊更大的新記憶體,並把現有容器中的元素逐個複製過去,然後銷毀舊的記憶體。 這時原有指向舊記憶體空間的迭代器已經失效,所以當操作容器時,迭代器要及時更新
vector相對於陣列來說略慢,在演算法競賽中應當酌情使用
標頭檔案:#include
命名空間:using namespace std;
1,定義和初始化
#include#includeusing namespace std;
int main()
2,常用操作
#include#includeusing namespace std;
int main()
{ vectorv;
v.push_back(1); //向v末尾新增元素
cout<::iterator it;
for(it=v.begin();it!=v.end();it++) //迭代遍歷
cout<<*itcout<<(v2>v)<
3,其他用法
#include#includeusing namespace std;
int main()
{ vectora,b;
a.reserve(100); //申請記憶體空間,如果小於目前空間則無效,反之擴大到n
cout<::reverse_iterator rit; //你像迭代
for(rit=b.rbegin();rit!=b.rend();rit++)
cout<<*rit<
由於vector內存在開支時是成倍增長,造成大量的記憶體浪費,所以需要對記憶體進行收縮整理,注意 clear函式並不能真正清空記憶體
using namespace std;
int main()
{ vectora,b;
a.reserve(100);
for(int i=0;i<10;i++)
a[i]=i;
vector(a).swap(a); //強制將記憶體收縮到當前大小
cout<().swap(a); //強制清除所有記憶體
cout<
STL 之vector向量容器
vector向量容器 作為陣列的乙個泛化推廣的vector容器,不僅可以陣列一樣的元素隨機訪問,還可以在容器的尾端插入新元素 vector是乙個簡單,高效的容器,在尾端插入和刪除元素,演算法時間複雜度為o 1 常數階,其他元素的插入和刪除為o n 的線性階,其中n為容器的元素個數,vector具有自...
STL(六)Vector向量容器
作為陣列的乙個泛化推廣的vector容器,vector是一種簡單 高效的容器。在尾端插入和刪除元素,演算法時間複雜度為o 1 常數階,其他元素的插入和刪除為o n 線性階,其中n為vector容器的元素個數。vector具有自動的記憶體管理功能,對於元素的插入和刪除,可動態調整所占用的記憶體空間。一...
STL中的向量 vector
向量 vector 是乙個封裝了動態大小陣列的順序容器 sequence container 跟任意其它型別容器一樣,它能夠存放各種型別的物件。可以簡單的認為,向量是乙個能夠存放任意型別的動態陣列。當程式設計師無法知道自己需要的陣列的規模多大時,用 vector 來解決問題可以達到最大節約空間的目的...