自定義迭代器實現range方法

2021-10-09 06:48:52 字數 756 閱讀 6027

迭代器中的__iter__和__next__只要滿足以下兩個原則即可.

iter, 必須要返回自身.

__next__返回當前的元素,並準備好下次的元素

class

myiterator

:def

__init__

(self,start,end=

none

,step=1)

:# 判斷end是否傳值

if end is

none

: self.start =

0 self.end = start

else

: self.start = start

self.end = end

self.step = step

def__iter__

(self)

:return self

def__next__

(self)

:if self.start > self.end:

# 迭代器結束 stopiteration

raise stopiteration

else

:# 更新self.start

temp, self.start = self.start, self.start + self.step

return temp

C 自定義迭代器

讓我們在示例中看乙個簡單迭代器型別的定義。我們定義乙個類模板,用來表示一段數值型別值,也可以生成指定範圍的開始和結束迭代器。這個迭代器也是模板型別,兩個模板都定義在同乙個標頭檔案 numeric range.h 中。下面是 numeric range模板的定義 template class nume...

c 自定義迭代器練習

include include include include includeusing namespace std 第乙個型別引數可選的值為如下幾種 struct input iterator tag 唯讀 struct mutable iterator tag 只寫 struct output ...

C 自定義迭代器(STL)

一.iterator traits 迭代器萃取機 include template struct iterator traits 假如我們定義了乙個迭代器myiterator template void my swap iter a,iter b 當函式 以乙個迭代器為引數時,會出現這樣乙個尷尬,t...