vector是標準模板庫中我們經常使用的容器,它與陣列類似,它擁有一段連續的記憶體空間,並且起始位址不變,因此它能很好的支援隨機訪問(使用操作符訪問其中的元素).但由於它的記憶體空間是連續的,所以在中間進行插入和刪除操作會造成記憶體塊的拷貝(複雜度為o(n)),另外,當該陣列的記憶體空間不夠時,需要重新申請一塊足夠大的記憶體並進行記憶體的拷貝,這些都大大影響了vector的效率。每個編譯器對它進行記憶體分配時,一般是當前大小的兩倍,然後把原陣列的內容拷貝過去。
下面是vector的簡單使用:
#include
#include
#include
#include
using namespace std;
void vectordemo();
int main()
//容器的使用
void vectordemo()
;//宣告乙個int型別集合的容器,並用陣列array對容器進行初始化
vectorv(array, array + size);
cout << "frist element:" << v.front() << "\nlast element:" << v.back() << endl; //1 6
//通過下標操作符和at函式來修改容器中的函式
//at函式會檢查下標是否越界
v[1] = 7; //1 7 3 4 5 6
v.at(2) = 10; //1 7 10 4 5 6
//在第二個位置插入22元素
v.insert(v.begin() + 1, 22); //1 22 7 10 4 5 6
//尾部新增元素19
v.push_back(19); //1 22 7 10 4 5 6 19
//宣告乙個迭代器(必須vector::iterator)
vector::iterator iter = v.begin();
while (iter != v.end())
cout << endl;
//查詢元素22的位置,並返回迭代器
iter = find(v.begin(), v.end(), 22);
if (iter != v.end())
else
//系統的最大容量
cout << "the max size of the vector is:" << v.max_size()catch (out_of_range & e)
//清除容器中的元素
v.erase(v.begin()); //清除第乙個元素
v.erase(v.begin(), v.end()); //清除容器中的全部元素
cout << "after erase,v " << (v.empty() ? "is" : "is not") << " empty" << endl;
//從開始位置把陣列插入容器中
v.insert(v.begin(), array, array + size);
cout << "after erase,v " << (v.empty() ? "is" : "is not") << " empty" << endl;
//用clear函式清空容器
v.clear();
cout << "after erase,v " << (v.empty() ? "is" : "is not") << " empty" << endl;
}
STL中vector的使用
作用 它能夠像容器一樣存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。vector在c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。特別注意 使用vector需要注意以下幾點 1 如果你要表示的向量長度較長 ...
STL中vector使用詳解
vector類常用的函式如下所示 1.建構函式 vector 建立乙個空vector vector int nsize 建立乙個vector,元素個數為nsize vector int nsize,const t t 建立乙個vector,元素個數為nsize,且值均為t vector const ...
STL之vector的使用
本文 vector是連續記憶體容器,換句話說,標準要求所有標準庫實現的時候,vector中的元素的記憶體必須是連續的。所以對於插入和刪除的時間複雜度是很高的,因為刪除或者插入的時候,需要元素的移動,即元素複製拷貝。vector的內部實現一般需要用到placement new 所以效率很高,因為很多的...