自定義迭代器 列印b開始n個素數

2021-09-24 02:43:10 字數 1105 閱讀 7485

#練習

#1, 寫乙個實現迭代器協議的類primes

#2, 可以生成b開始n個素數

# class primes:

# def __init__(self, b, n)

# ...

# for x in primes(10,4):

# print(x) # 11,13,17,19

class myprime:

#因為該方法不需要類或者物件呼叫,所以定義靜態方法,沒有self引數

#用於判斷傳入的引數是否是素數

@staticmethod

def __prime(digit):

for x in range(2,digit):

if digit % x == 0:

return false

return true

def __init__(self, b, n):

self.__begin = b

self.__count = n

#可迭代物件

def __iter__(self):

print("__iter__ are called")

self.__cur_pos = self.__begin

self.__cur_count = 0

return self

def __next__(self):

print("__next__ are called")

#如果數量達到,則停止迭代

if self.__cur_count >= self.__count:

raise stopiteration

self.__cur_count += 1

while true:

if self.__prime(self.__cur_pos):

p = self.__cur_pos

self.__cur_pos += 1

return p

self.__cur_pos += 1

for x in myprime(10,4):

print(x)

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