1. 程式人生 > >標準庫vector型別和迭代器iterator型別

標準庫vector型別和迭代器iterator型別

對C++ Primer 中文版第4版  第三章標準庫型別中的vector型別和迭代器iterator型別做一個總結。

vector稱為容器,是同一種類型的物件的集合。一個容器中的所有物件都必須是同一種類型。

1.使用vector之前,必須包含相應的標頭檔案。宣告如下:

                         #include<vector>

                          using std::vector

2.vector儲存何種物件的型別,通過將型別放在類模板名稱後面的尖括號中來指定型別。

例如:vector<int>  ivec;             含有若干int型別物件的vector,變數名為ivec。

          vector<string>  ivec(10,"hi!");         初始化

3.vector的下標操作

C++程式設計師習慣於優先選用!=而不是<來編寫迴圈判斷條件。

for(vector<int>::size_type ix=0; ix != ivec.size(); ++ix)

     ivec[ix]=0;     //正確

     ivec[ix]=ix;    //錯誤

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

迭代器簡介

迭代器是一種檢查容器內元素並遍歷元素的資料型別。

除了使用下標來訪問vector物件的元素外,標準庫提供來另一種訪問元素的方法--就是“迭代器”。

所有的標準庫容器都定義來相應的迭代器型別,而只有少數的容器支援下標操作。

1.定義

vector<int>::iterator  iter;

每個標準庫容器型別都定義了一個名為iterator的成員。

2.用迭代器編寫迴圈

for(vector<int>::iterator iter=ivec.begin();  iter!=iver.end(); ++iter)

  *iter=0;

3.const_iterator

const_iterator型別,該型別只能用於讀取容器內元素,但不能改變其值。

for(vector<int>::const_iterator iter=ivec.begin();  iter!=iver.end(); ++iter)

  cout<<*iter<<endl;         //正確

  *iter=100;                       //錯誤