8 5 迭代器的概念和分類

2021-10-08 02:13:55 字數 2647 閱讀 7545

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

//(3)驗證迭代器所屬種類的**:

//如下這些_display_category()是過載函式;

void

_display_category

(random_access_iterator_tag mytag)

void

_display_category

(bidirectional_iterator_tag mytag)

void

_display_category

(forward_iterator_tag mytag)

void

_display_category

(output_iterator_tag mytag)

void

_display_category

(input_iterator_tag mytag)

template

<

typename t>

void

display_category

(t ite)

;int

main

(void);

for(vector<

int>

::iterator iter=iv.

begin()

;iter!=iv.

end(

);iter++

)//3

display_category

(array<

int,

100>

::iterator()

);//這種 型別():代表產生 乙個臨時物件;

display_category

(vector<

int>

::iterator()

);display_category

(list<

int>

::iterator()

);display_category

(map<

int,

int>

::iterator()

);display_category

(set<

int>

::iterator()

);system

("pause");

return0;

}/**(1)迭代器

*官方說:迭代器是乙個「可遍歷stdl容器全部或者部分元素」的物件,行為類似指標的物件。

*迭代器用於表示容器中的某乙個位置,具體實現和容器相關,迭代器是有容器來提供的

*也就是說,一般來講,容器裡面定義選擇迭代器。

*iter 指標,*iter迭代器指向的元素**

*(2)迭代器的分類問題

*分類依據:迭代器的移動特定(雙向和單向)和容器上所能進行的操作。

*迭代器行為如指標,到處跳,表示衣蛾位置,我們一般分類是依據它的跳躍能力,每個分類對應乙個struct

* 1.輸出型迭代器output iterator --向前寫入

* struct output_iterator_atg

* 一步一步往前走,並且能夠通過這個迭代器來改寫對應位置的值。 *iter=value 前++,--等

* 2.輸入型迭代器 --向前讀取一次

* struct input_iterator_atg

* 一次乙個以向前的元素讀取元素,按照順序,乙個乙個返回元素的值

* 3.前向迭代器 forward iterator --向前讀取,繼承自input iterator

* 4.雙向迭代器bidierctional iterator --雙向讀取

* 5.隨機訪問迭代器 --隨機讀取

* random-access iterator

* 這些結構是有繼承關係的,5-->4--->3--->2

** 大多數容器都有迭代器,但是並不是所有迭代器都有迭代器,如stack queue就不提供迭代器。

*(3)驗證迭代器所屬種類的**

迭代器概念

可迭代物件 1 判斷乙個物件是否是iterable物件,首先需要匯入collections中的iterable模組 2 from collections import iterable 3 isinstance iterable 4 true 5 isinstance 100,iterable 6 ...

觸發器的概念和分類

觸發器,就是制定乙個規則,在我們做增刪改操作的時候,只要滿足該規則,自動觸發,無需呼叫。語句級觸發器 不包含有for each row的觸發器。行級觸發器 包含有for each row的就是行級觸發器。加for each row是為了使用 old或者 new物件或者一行記錄。在觸發器中觸發語句與偽...

STL中的迭代器分類

五類迭代器如下 1 輸入迭代器 唯讀,一次傳遞 為輸入迭代器預定義實現只有istream iterator和istreambuf iterator,用於從乙個輸入流istream中讀取。乙個輸入迭代器僅能對它所選擇的每個元素進行一次解析,它們只能向前移動。乙個專門的建構函式定義了超越末尾的值。總是,...