C++ Primer 第三章 標準庫vector型別
vector是同一種類型的物件的集合,每個物件都有一個對應的整數索引值。
使用vector之前,必須包含相應的標頭檔案。
#include<vector>
using std::vector;
vector不是一種資料型別,而只是一個類模板,可用來定義任意多種資料型別。
vector<int> ivec; //vector是一個類模板,而vector<int>是資料型別。
1.vector物件的定義和初始化
vector<T> v1;
vector<T> v2(v1);
vector<T> v3(n,i); //v3包含n個值為i的元素
vector<T> v4(n); //v4含有值初始化的元素的n個副本
一般先初始化一個空vector物件,然後再動態地增加元素。
如果沒有指定元素的初始化式,那麼標準庫將自行提供一個元素初始值進行值初始化。
對於有自定義建構函式但沒有預設建構函式的類,在初始化這種型別的vector物件時,不能僅提供元素個數,還需要提供元素初始值。
2.vector物件的操作
v.empty()
v.size()
v.push_back(t) 在v的末尾增加一個值為t的元素
v[n]
v1=v2 把v1的元素替換為v2中元素的副本
v1==v2
!= < <= > >=
使用size_type型別時,必須指出該型別是在哪裡定義的.vector型別總是包括vector的元素型別:
vector<int>::size_type (ok)
vector::size_type (error)
vector中的物件是沒有命名的,可以按vector中物件的位置來訪問它們。
for(vector<int>::size_type ix=0;ix!=ivec.size();++ix)
ivec[ix]=0;
注意:必須是已存在的元素才能用下標操作符進行索引。通過下標操作進行賦值時,不會新增任何元素。
所謂的“緩衝區溢位”錯誤就是對不存在的元素進行下標操作的結果。