c 指標與迭代器的區別

2021-10-08 18:01:12 字數 1187 閱讀 5923

這是我感覺總結的很好的一篇回答:

知乎原回答鏈結

如果只討論 stl container 類的 iterator,它們其實都是一種泛型指標。c風格指標是屬於 iterator 的一種的。iterator 根據功能做了更細的劃分,stl 中的 iterator 分成了五類。我覺得它們的區別:

在範圍上,pointer 屬於 iterator 的一種(random access iterator)

在功能上,iterator 有著比pointer 更細的劃分並對應能力不同的功能(過載不同的運算子 )

在行為上,iterator 比 pointer更統一和良好的用法(更輕易使用 begin()、end()且不用擔心越界)等

膜拜

指標與迭代器的差別:

迭代器:

(1):迭代器不是指標,而是類模板,表現的像指標,實際上他只是模擬了指標的一些功能,通過過載指標的一些操作符:->、、++、-- 等封裝了指標。是乙個」可遍歷stl容器內全部或部分元素「的物件,本質是封裝了原生指標,是指標概念的一種提公升,提供了比指標更高階的行為,相當於一種智慧型指標,它可以根據不同的資料結構來實現不同的++,–等操作;

(2):迭代器返回的是物件的引用而不是物件的值,所以cout只能輸出解引用()迭代器之後的值

(3):在設計模式中有一種模式叫迭代器模式,簡單來說就是提供一種方法,在不需要暴露某個容器內部的表現形式情況下,使之能一次訪問容器的各個元素,這種設計模式在stl中得到了廣泛應用,是stl的關鍵所在。通過迭代器,可以使容器和演算法有機粘合在一起,只要演算法給予不同的迭代器,就可以對不同的容器進行相同的操作;

指標:

指標能指向函式而迭代器不行,迭代器只能指向容器;指標是迭代器的一種。指標只能指向某些特定的容器;迭代器是指標的抽象和泛化;所以,指標滿足迭代器的所有要求;

因此,迭代器與指標是由很大差別的,雖然他們的表現行為相似,但本質是不同的!

指標是存放位址的變數,迭代器是類模板;

注意:迭代器在使用後就釋放了,不能再繼續使用,但指標可以;

C 指標與迭代器的區別

回答,雖然指標和迭代器很像,比方說都可以 去訪問下乙個 當然針對雙向迭代器 都可以 n去訪問某乙個位置的 隨機迭代器 都可以修改迭代器指向物件的值。但是迭代器與指標的完全不同的,就拿遍歷來說,指標的 只是簡單的去增加快大小的位址,這在支援隨機迭代器的容器中是可行的,但是當去遍歷list這種記憶體不連...

迭代器與指標的區別

迭代器與指標的差別 迭代器 1 迭代器不是指標,是類模板,表現的像指標。他只是模擬了指標的一些功能,通過過載了指標的一些操作符,等封裝了指標,是乙個 可遍歷stl standard template library 容器內全部或部分元素 的物件,本質是封裝了原生指標,是指標概念的一種提公升 lift...

C 迭代器和指標區別

1 總的說 1 範圍 指標屬於迭代器的一種 指標可以用來遍歷容器 陣列 2 功能 迭代器有著比指標更細的劃分並對應能力不同的功能 過載不同的運算子 3 行為 迭代器比指標更統一和良好的用法 更輕易使用begin 和end 不用擔心越界 2 迭代器 1 迭代器不是指標,是類模板,表現的像指標。模擬了指...