迭代器與指針


 

 STL 迭代器

最簡單的迭代器是指針

給定一個指向數組中的第一個元素的指針,可遞增該指針使其指向下一 個元素,還可直接對當前位置的元素進行操作。

STL 中的迭代器是模板類,從某種程度上說,它們是泛型指針

這些模板類讓程序員能夠對 STL 容器進行操作。

注意:

操作也可以是以模板函數的方式提供的 STL 算法,迭代器是一座橋梁,讓這些模板函數能夠以一致而無縫的方式處理容器,而容器是模板類

迭代器不是指針,是類模板,表現的像指針。

迭代器只是模擬了指針的一些功能,通過重載了指針的一些操作符,->,*,++ --等封裝了指針,是一個“可遍歷STL容器內全部或部分元素”的對象, 本質是封裝了原生指針,是指針概念的一種提升,提供了比指針更高級的行為,相當於一種智能指針,可以根據不同類型的數據結構來實現不同的++,--等操作;
迭代器返回的是對象引用而不是對象的值,所以cout只能輸出迭代器使用*取值后的值而不能直接輸出其自身。

 注:迭代器在使用后就釋放了,不能再繼續使用,但是指針可以


指針:


指針能指向函數而迭代器不行,迭代器只能指向容器;

指針是迭代器的一種。指針只能用於某些特定的容器;迭代器是指針的抽象和泛化。所以,指針滿足迭代器的一切要求。

 


一個是類模板,一個是存放地址的指針變量。

 

參考:

《21天學通C++》(第八版)[美] Siddhartha Rao 著 袁國忠 譯

https://blog.csdn.net/gogokongyin/article/details/51206225

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM