#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中讀取。乙個輸入迭代器僅能對它所選擇的每個元素進行一次解析,它們只能向前移動。乙個專門的建構函式定義了超越末尾的值。總是,...