cpp中,数列怎么使用基于范围的for循环
时间: 2024-10-23 14:15:05 浏览: 15
基于C++实现的斐波那契数列
在C++中,基于范围的`for`循环,也称为`auto`遍历,通常用于迭代容器类型的元素,如数组、向量、列表、集合等。对于数列(如果是指像数学序列那样的结构),虽然C++标准库本身并没有直接提供针对数列的`for`循环,但你可以通过自定义的迭代器或者序列适配器(如`std::views`)来实现类似的功能。
例如,如果你有一个整数数组:
```cpp
int arr[] = {1, 2, 3, 4, 5};
size_t len = sizeof(arr) / sizeof(arr[0]);
// 使用传统for循环
for (size_t i = 0; i < len; ++i) {
std::cout << arr[i] << " ";
}
// 使用基于范围的for循环(假设arr是一个可以迭代的类)
for (int num : arr) {
std::cout << num << " ";
}
```
如果你想处理更复杂的数列逻辑,比如斐波那契数列,你可以创建一个类,生成器函数(如`generate`)或使用lambda表达式配合`std::views::seq`来生成视图:
```cpp
#include <iostream>
#include <ranges>
// 自定义数列生成器
auto fibonacci() -> int {
int a = 0, b = 1;
while (true) {
yield a;
int temp = a + b;
a = b;
b = temp;
}
}
int main() {
// 使用基于range的for循环显示前10项斐波那契数
for (int fib : fibonacci().take(10)) {
std::cout << fib << " ";
}
return 0;
}
```
阅读全文