STL讀書筆記 迭代器概念

2021-05-27 07:09:19 字數 1509 閱讀 1432

一。概念

1)迭代器在設計模式中成為iterator模式,其定義為:提供一種方法,使他能夠按順序遍歷某個聚合體(容器)所包含的所有元素,但又不需要暴露該容器的內部表現方式。

2)迭代器是一種類似指標的物件,他的工作也主要是內容提取(dereference)和成員的訪問(member access)。因此其對應的兩個過載操作符工作是:operator*和operator-> 。

二。常用迭代器型別

最常用的迭代器型別包括:value type, difference type, pointer, reference, iterator catagoly.

1)value type,是指迭代器所指物件的型別。

2)difference type,用來表示兩個迭代器之間的距離,也可以表示乙個容器的最大值。

3)reference type,意為迭代器所指之物的內容。在c++中如果函式要傳回左值,都是以by reference的方式進行的。

4)pointer type,指向迭代器所指之物。在c++中,可以實現傳回乙個左值,令他代表pointer所指之物的位址。

5)iterator_category,表示迭代器的相應型別。在這之前,討論迭代起器的分類:

a. input iterator:該迭代器所指的物件不允許被外部改變,read only。

b. output iterator:只允許寫操作,write only。

c. forward iterator:允許「寫入型」的演算法在此迭代器內進行讀寫操作。

d. bidirectional iterator:提供雙向移動操作。

e. random access iterator: 增加指標算術能力。例如 ptr+n, ptr[n], ptr1-ptr2, ptr1三。迭代器定義原始碼

//五種迭代器型別

struct input_iterator_tag {};

struct output_iterator_tag {};

struct forward_iterator_tag : public input_iterator_tag {};

struct bidirectional_iterator_tag : public forward_iterator_tag {};

struct random_access_iterator_iterator_tag : public bidirectional_iterator_tag {};

//std::iterator.自定義的迭代器應當繼承下面這個iterator

template struct iterator

;//特性萃取,獲取各個迭代器的相應型別

template struct iterator_traits

;

STL讀書筆記 迭代器概念

一。概念 1 迭代器在設計模式中成為iterator模式,其定義為 提供一種方法,使他能夠按順序遍歷某個聚合體 容器 所包含的所有元素,但又不需要暴露該容器的內部表現方式。2 迭代器是一種類似指標的物件,他的工作也主要是內容提取 dereference 和成員的訪問 member access 因此...

讀書筆記 《STL STL迭代器?》

3 迭代器的定義方式 4 其他 迭代器目的 配合容器訪問 運算元據等操作 就像對資料單元的排序 查詢 求和等需要對資料進行遍歷的操作之類的,也特別像鍊錶裡面的指標遍歷的方式是一樣的 迭代器特性 1 適用性 適合所有通用的容器 極個別容器除外,因為容器的特性使然 技術是使用的泛型技術 2 封裝性 對外...

STL讀書筆記

vector 會自動增長的陣列 list 擅長插入刪除的鍊錶 有黑必有白,世界萬物都是成對出現的。鍊錶對於陣列來說就是相反的存在。陣列本身是沒有動態增長能力的 程式中也必須重新開闢記憶體來實現 而鍊錶強悍的就是動態增長和刪除的能力。但對於陣列強悍的隨機訪問能力來說的話,鍊錶卻很弱。list是乙個雙向...