轉載:https://www.cnblogs.com/weew12/p/10583057.html
STL 迭代器
最簡單的迭代器是指針。
給定一個指向數組中的第一個元素的指針,可遞增該指針使其指向下一 個元素,還可直接對當前位置的元素進行操作。
STL 中的迭代器是模板類,從某種程度上說,它們是泛型指針。
這些模板類讓程序員能夠對 STL 容器進行操作。
注意:
操作也可以是以模板函數的方式提供的 STL 算法,迭代器是一座橋梁,讓這些模板函數能夠以一致而無縫的方式處理容器,而容器是模板類。
迭代器不是指針,是類模板,表現的像指針。
迭代器只是模擬了指針的一些功能,通過重載了指針的一些操作符,->,*,++ --等封裝了指針,是一個“可遍歷STL容器內全部或部分元素”的對象, 本質是封裝了原生指針,是指針概念的一種提升,提供了比指針更高級的行為,相當於一種智能指針,可以根據不同類型的數據結構來實現不同的++,--等操作;
迭代器返回的是對象引用而不是對象的值,所以cout只能輸出迭代器使用*取值后的值而不能直接輸出其自身。
注:迭代器在使用后就釋放了,不能再繼續使用,但是指針可以
指針:
指針能指向函數而迭代器不行,迭代器只能指向容器;
指針是迭代器的一種。指針只能用於某些特定的容器;迭代器是指針的抽象和泛化。所以,指針滿足迭代器的一切要求。
一個是類模板,一個是存放地址的指針變量。