迭代器iterator,它是指標的泛化形式,每種迭代器只能用於它自己的容器類。
(1)前遞增和後遞增操作符++,將迭代器跳到下乙個資料項;
(2)前遞減和後遞減操作符–,將迭代器跳到上乙個資料項;
(3)相等操作符==和不相等操作符!=,測試兩個迭代器是否指向同乙個位置;
(4)提領操作符*,加入p是迭代器變數,使用*p就能訪問位於p處的資料,有些容器既可讀又可寫,有些只能讀。
許多容器類都提供了以下的成員函式來返回迭代器物件,只想資料結構中的特殊資料元素:
• c.begin():返回容器c的迭代器,它指向容器c的第乙個資料項;
• c.end():返回某個東西來測試迭代器在什麼時候越過容器c的最後乙個資料項,即end()返回值標誌的是容器最後乙個元素之後的位置,相當於乙個哨兵值。
使用方法:for(p=c.begin();p!=c.end();p++)
例如使用vector的迭代器例子為:
#include
#include //引用vector的標頭檔案
using
namespace
std;
int main()
cout
<<"here is what id in the container:\n";
//定義乙個迭代器
vector
::iterator p;
//遍歷vector
for(p=container.begin();p!=container.end();p++)
cout
cout
<<"setting entries to 0:\n";
for(p=container.begin();p!=container.end();p++)
cout
<<"now container contains:\n";
for(p=container.begin();p!=container.end();p++)
cout
0; }
可以使用==或是!=來判斷兩個迭代器是否定位到同乙個元素;
下面用乙個例子來看一下vector的迭代器是如何使用操作運算子的:
vector
container1;
container1.push_back('a');
container1.push_back('b');
container1.push_back('c');
container1.push_back('d');
for(int i=0;i<4;i++)
vector
::reverse_iterator rp;
for(rp=container1.rbegin();rp!=container1.rend();rp++)
cout
《輸出:
/*a b cdd
c b a
*/
此外還有很多種其他的迭代器,比如輸入迭代器、輸出迭代器等。
有關迭代器的參考資料可見:
iterator-c++ reference
iterator library-cppreference
C 中的迭代器
基本操作 迭代器的const iterator 其他 簡單 示例 參考迭代器可以算是c 程式設計中比較高階的的內容了,如果你對此還一無所知,可能你需要先了解一下模板,容器的概念。說到迭代器,首先這個名字就給人一種很厲害的感覺,他是個什麼東東呢?迭代器扮演容器與演算法之間的膠合劑,是所謂的 泛型指標 ...
C 中的迭代器模式
聚合介面 public inte ce ilistcollection 迭代器介面 public inte ce iterator 具體聚合類 public class persons ilistcollection public void add intvalue public iterator ...
C 中的迭代器基礎
yield 關鍵字用於指定返回的乙個或多個值。到達 yield return 語句時,會儲存當前位置。下次呼叫迭代器時將從此位置重新開始執行。迭代器對集合類特別有用,它提供一種簡單的方法來迭代複雜的資料結構 如二進位制樹 摘自msdn 其實照我的理解來說,迭代器就是可以用foreach訪問的資料,也...