【发布时间】:2022-01-10 07:58:03
【问题描述】:
我对范围相当陌生,我想知道是否有办法应用动态数量的范围适配器。折腾了一段时间的代码,也找了找,没用。
#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=')。似乎范围适配器的每个应用程序都需要一个新类型,因此我们无法动态创建此范围。有没有办法解决这个问题?
【问题讨论】:
-
只...过滤实际容器真的更有意义。当您可以根据需要应用每个过滤器时,为什么还要使用惰性视图?
标签: c++ c++20 std-ranges