C++日記——Day56:迭代器的概念和分類

迭代器基本概念

迭代器是一個“可遍歷STL容器全部或者部分元素”的對象(行爲類似於指針對象)

迭代器是用來表現容器中的某一個位置;迭代器依賴於容器,是由容器來提供的,也就是說,一般來講,容器裏邊迭代器。

 

迭代器的分類

分類依據:迭代器的移動特性,以及這個迭代器上能夠進行的操作;

迭代器行爲如指針到處跳,表示一個位置,我們一般分類是依據他的跳躍能力,每個分類是一個對應struct定義:

a、輸出型迭代器:

struct output_iterator_tag;

b、輸入型迭代器

struct input_iterator_tag;

c、前向迭代器

struct forward_iterator_tag;

d、雙向迭代器(bidirectional iterator)

struct bidirectional_iterator_tag;

e、隨機訪問迭代器(random access iterator)

struct random_access_iterator_tag;

繼承關係:

 

大多數容器中都有一個迭代器類型;並不是所有容器都有迭代器;比如:stack,queue這種容器就不提供迭代器。

 

完善迭代器能力

a、輸出型迭代器(struct output_iterator):一步一步能往前走,並且能夠通過這種迭代器來改寫容器數據;

b、輸入型迭代器(struct input iterator):以向前的方向讀取元素,按照這個順序一個一個返回元素。

c、前向迭代器(struct forward iterator):繼承自Input迭代器,因此它能向前的方向來讀取元素,並且讀取時提供額外保證。

d、雙向迭代器(bidirectional iterator):在前向迭代器基礎之上增加了往回(反向)迭代,也就是迭代位置可以回退,新增加如下操作:

e、隨機訪問迭代器(random access iterator):在雙向迭代器的基礎上又增加了所謂的隨機訪問能力。也就是增減某個偏移量能夠計算距離(因爲內存相連)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章