#include#include#include#include#includeusing namespace std;
/**第乙個型別引數可選的值為如下幾種:
*struct input_iterator_tag //唯讀
;struct _mutable_iterator_tag //只寫
;struct output_iterator_tag //只寫
: _mutable_iterator_tag
;struct forward_iterator_tag //前向移動
: input_iterator_tag, _mutable_iterator_tag
;struct bidirectional_iterator_tag //可雙向移動
: forward_iterator_tag
;struct random_access_iterator_tag //隨機讀寫
: bidirectional_iterator_tag
;*/templateclass myiterator : public iterator
myiterator(const myiterator& it)
public:
myiterator& operator=(const myiterator& it)
bool operator==(const myiterator& it)
bool operator!=(const myiterator& it)
/*** 前置++
*/ myiterator& operator++()
/*** 後置++
*/ myiterator operator++(int)
t& operator*()
private:
t* pt;
};templateclass myvector
myvector(int len)
public:
t& operator(int i)
iterator begin()
iterator end()
private:
int len;
t* pt;
};bool eq_9(int k)
void test1()
//該迭代器可以適應count_if演算法
int r = count_if(begin, end, eq_9);
cout << "r = " << r << endl;
//該迭代器可以適應copy演算法
ostream_iteratoroi(cout, " ");
copy(begin, end, oi);
}void test2()
int main()
C 自定義迭代器
讓我們在示例中看乙個簡單迭代器型別的定義。我們定義乙個類模板,用來表示一段數值型別值,也可以生成指定範圍的開始和結束迭代器。這個迭代器也是模板型別,兩個模板都定義在同乙個標頭檔案 numeric range.h 中。下面是 numeric range模板的定義 template class nume...
C 自定義迭代器(STL)
一.iterator traits 迭代器萃取機 include template struct iterator traits 假如我們定義了乙個迭代器myiterator template void my swap iter a,iter b 當函式 以乙個迭代器為引數時,會出現這樣乙個尷尬,t...
開發自定義python 迭代器
class test object def init self,data iter,stop self.data iter data iter self.stop stop self.start 0 def iter self return self def next self self.start...