我对范围(ranges)比较陌生,想知道是否有一种方法可以应用动态数量的范围适配器。我已经尝试了一些代码,也进行了一些搜索,但没有找到合适的方法。
#include <iostream>
#include <ranges>
int main() {
auto output = std::ranges::views::iota(2, 100);
for (int i = 2; i < 100; i++) {
output = output | std::ranges::views::filter([i](int num){ return num % i != 0 || num == i; });
}
std::cout << "The 10th prime is: " << output[9] << "\n";
}
我想要的是这样的东西,但是这会导致编译错误(no match for 'operator='
)。似乎每个范围适配器都需要一个新类型,因此我们无法动态创建此范围。有什么解决方法吗?