第六章Vector向量容器
作為陣列的一個泛化的vector容器,不僅可以進行陣列一樣的元素隨機訪問,還可以在容器的尾端插入新元素。
vector具有自動的記憶體管理功能,對於元素的插入和刪除,可動態調整所佔用的記憶體空間。
建立vector物件
(1) vector(const A&a=A())
建立一個空的vector物件,A是記憶體分配器,此引數可省略,相當於一個vector()的呼叫。例如,下面一行程式碼建立了vector物件v。
(2)vector(size_type n)
建立一個具有n個元素的vector物件,每個vector元素具有它的型別下的預設值。此時,n個vector元素的記憶體空間已被分配。例如,下面一行程式碼,建立了具有10個元素的vector物件v,每個元素的預設值0.0
(3)vector(size_type n,const T& value)
建立一個具有n個元素的vector物件,每個物件具有初始值value。例如,下面一行程式碼
建立了一個具有10個元素的vector物件,每個元素的預設值為9.3
(4)vector(const vector&)
通過拷貝一個vector物件對的各個元素值,建立一個新的vector物件。例如,下面使用v1物件建立v2物件,此時,v2物件的5個元素也具有字元值“k”。
(5)vector(const InuptIterator first,const InuptIterato last,const A& a = A() )
InputIterator為輸入迭代器,通過拷貝迭代器區間[first,last)的元素值,建立一個新的vector物件中,記憶體分配器可省略。例如,利用int陣列iArray各元素值,建立了vector物件v。
初始化賦值
vector 提供的push_back函式,常用來進行vector容器的初始化。push_back函式在容器的尾端插入新元素value。
#include<vector> #include<iostream> using namespace std; int main(){ vector<int> v; v.push_back(20); v.push_back(26); v.push_back(39); vector<int>::iterator i, iend; //起始結尾迭代器值 iend = v.end(); int j; for (i = v.begin(), j = 0; i != iend; i++, j++) cout << "v[" << j << "]=" << *i << endl; system("pause"); return 0; }
元素插入
不同於在
常用函式原型
(1)bool empty()
(2)size_type size()
當前vector容器的實際元素的個數
(3)size_type max_size()
系統所允許的vector容器的最大元素個數。
(4)size_type capacity()
當前可容納的vector的元素的個數
(5)reference front()
vector容器的首元素(引用),要求vector不為空
(7)void pop_back()
與push_back函式相反,pop_back函式用於刪除末尾的一個容器元素。