实现迭代器range(int start, int stop, int step) 要求包含start,不包含stop,用c#
时间: 2024-04-29 13:26:49 浏览: 104
C#迭代器
实现迭代器range(int start, int stop, int step)的要求是,该迭代器要能够输出从start开始,以step为步长,直到小于stop的所有数字(不包括stop本身)。
以下是用c语言的实现代码:
```
#include <stdio.h>
typedef struct {
int current;
int stop;
int step;
} RangeIterator;
RangeIterator range(int start, int stop, int step) {
RangeIterator iter;
iter.current = start;
iter.stop = stop;
iter.step = step;
return iter;
}
int next(RangeIterator* iter) {
int value = iter->current;
iter->current += iter->step;
return value;
}
int has_next(RangeIterator iter) {
return iter.current < iter.stop;
}
int main() {
RangeIterator iter = range(0, 10, 2);
while (has_next(iter)) {
printf("%d\n", next(&iter));
}
return 0;
}
```
在上述代码中,我们定义了一个结构体RangeIterator,其中包含当前值current、终止值stop和步长step。通过函数range(int start, int stop, int step),我们可以为RangeIterator设置初值,并返回该迭代器。
接着,我们定义了两个函数,分别是next(RangeIterator* iter)和has_next(RangeIterator iter)。其中,next函数返回当前值,并将当前值加上步长作为下一次迭代的值;而has_next函数则返回当前值是否小于终止值。
在main函数中,我们使用while循环来不断遍历RangeIterator中的值,并输出它们。最后,执行该代码可以得出以下输出结果:
```
0
2
4
6
8
```
阅读全文