1. 除了普通的迭代器,還有下面三種迭代器:
<1> 插入迭代器,實現插入元素的功能。又分爲這樣三種:
(1) back_iterator,創建實用push_back實現插入的迭代器。
(2) front_iterator,使用push_front實現插入。
(3) inserter,使用insert實現插入操作,參數有一個容器和一個迭代器。inserter總是在這個迭代器所標示的位置前面插入新元素。
<2> iostream流迭代器,可與輸入或輸出流綁定在一起,用於迭代遍歷所關聯的io流。只定義了最基本的迭代器操作:自增、解引用、賦值。
.
//下面這段代碼從標準輸入中讀取int型數值,直到不是爲止
istream_iterator<int> in_iter(cin);
istream_iterator<int> eof;
vector<int> vec(in_iter,eof);
<3> 反向迭代器,實現反向遍歷。
2. 一個既支持--也支持++的迭代器就可以定義反向迭代器,但是流迭代器不可以,由於不能反向遍歷流,因此流迭代器不能創建反向迭代器。
3. 按照支持的操作分類,迭代器可分爲五種:
<1> 輸入迭代器:讀,不能寫,只支持自增運算;如istream_iterator
<2> 輸出迭代器:寫,不能讀,只支持自增運算;如ostream_iterator
<3> 前向迭代器:讀和寫,只支持自增運算;
<4> 雙向迭代器:讀和寫,支持自增和自減運算;map、set和list提供雙向迭代器
<5>隨機訪問迭代器:讀和寫,支持完整的迭代器算術運算;streing、vector和deque提供隨機訪問迭代器
4. 關聯容器的鍵是const對象,因此關聯容器不能使用任何寫序列元素的算法。