Bob*_*Bob 4 c++ iota c++20 std-ranges
#include <iostream>
#include <ranges>
int main()
{
for (int num: std::ranges::views::iota(0,5)) {
std::cout << num << 'n';
}
for (int i : std::ranges::iota_view{55, 65}) {
std::cout << i << '\n';
}
}
Run Code Online (Sandbox Code Playgroud)
views::iota(e)对于任何合适的子表达式和 ,和views::iota(e, f)分别与和表达式等价。iota_view(e)iota_view(e, f)ef
是否有理由使用其中一种与另一种?
如果不是,既然它们都是在 C++20 中引入的,为什么还要存在呢?
std::ranges::iota_view是一种行为类似于临时生成其元素的视图的类型。它必须以某种方式是可构建的。
std::views::iota是一个帮助器自定义点对象,它遵循一种模式,在使用时可以产生更高性能/正确的结果。它最终会回归std::ranges::iota_view。所述模式是使用views::something而不是ranges::something_view。
当您将更多适配器嵌套在一起时,使用后者可能会产生更好的结果(主要是在编译时方面)。
一般来说,更喜欢views::meow.
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |