1. 程式人生 > >C++ Primer 第三章 標準庫vector型別

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;

注意:必須是已存在的元素才能用下標操作符進行索引。通過下標操作進行賦值時,不會新增任何元素。

所謂的“緩衝區溢位”錯誤就是對不存在的元素進行下標操作的結果。