c 自定義迭代器練習

2021-08-30 10:50:32 字數 1411 閱讀 9966

#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...