一、疊代器
是一種資料形態,其意義為記憶空間位址,使用方法如指標。
疊代器的宣告
疊代器類型<型態>::iterator 疊代器名稱;
例如:
vector<int>::iterator h;
向量可使用疊代器來呼叫其元素,如:
vector<int> a; //建構整數向量a
vector<int>::iterator it; //宣告一整數向量疊代器h
for(int i=0;i<10;i++)
a.push_back(i);
for( it=a.begin();it!=a.end();it++)
cout<<*it; //顯示0123456789
cout<<endl<<*(it-1); //顯示9
cout<<endl<<*(it-2); //顯示8
cout<<endl<<*(it-3); //顯示7
註一:a.begin()是向量a首位元素的記憶空間位址。a.end()是向量a末位元素的下一個記憶空間位址。
註二:it也是記憶空間位址,*it表示此記憶空間所指的資料。
註三:it++表示it跳到下一個元素的記憶空間位址。
逆向疊代器,順序由後到前
int tt[]={1,2,3,4,5}; //宣告整數陣列tt
vector<int> a(tt,tt+5); //將tt的第一個元素到第五個元素複製給整數向量a
vector<int>::reverse_iterator i; //宣告整數向量逆向迭代器i
for(i=a.rbegin();i!=a.rend();i++)
cout<<*i; //顯示54321
註一:a.rbegin()是向量a首位元素的前一個記憶空間位址。a.rend()是向量a末位元素的記憶空間位址。
圖示:此乃向量a,灰色代表有元素占據的記憶空間,白色則為空白空間
註二:i++表示i跳到下一個記憶空間位址,因是逆向疊代器,故位址應為前一個元素。
常數疊代器
宣告方式例如:vector<int>::const_iterator I;。其功用與一般疊代器幾乎相同,惟一不同者在於:常數疊代器僅只能對容器中資料進行「讀取」的動作,而無法存入或更改其值。也需注意,我們無法將常數迭代器的值指派給其他迭代器,沒事少用常數疊代器。