標準庫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; //錯誤