2 回答

TA貢獻1772條經(jīng)驗 獲得超6個贊
迭代器
list<int> lst;
for(list<int>::iterator i = lst.begin(); i != lst.end(); i++)
printf("%d", *i);
iterator本質(zhì)就是一個指針,和下面類似
char s[] = "hello";
for(char* p = s; *p != '\0'; p++) printf("%c", *p);

TA貢獻1853條經(jīng)驗 獲得超18個贊
iterator是一種抽象,用來封裝對數(shù)據(jù)結(jié)構的遍歷操作。比如你可以在不用知道數(shù)據(jù)結(jié)構實現(xiàn)的情況下,調(diào)用iterator來遍歷。這樣,我們可以用同一函數(shù)來對不同的數(shù)據(jù)結(jié)構進行遍歷,因為函數(shù)只操作迭代器,不與具體的數(shù)據(jù)結(jié)構直接耦合。
比如STL中find算法,可以用于任何支持輸入迭代器(Input iterator category)的數(shù)據(jù)結(jié)構,我們可以將vector::iterator,list::iterator,map::iterator等傳遞給find,而這些iterator的實現(xiàn)顯然依賴于具體的數(shù)據(jù)結(jié)構,并且有很大差異。
當然其他語言中也有iterator的概念,比如java,C#,python。
- 2 回答
- 0 關注
- 1101 瀏覽
添加回答
舉報