#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';
}
}
CPP参考 https://en.cppreference.com/w/cpp/ranges/iota_view
-
views::iota(e)
and views::iota(e, f)
are 等价表达 to
iota_view(e)
and iota_view(e, f)
分别对于任何合适的
子表达式e
and f
.
是否有理由使用其中一种与另一种?
如果不是,既然它们都是在 C++20 中引入的,为什么还要存在呢?
std::ranges::iota_view
是一种行为类似于临时生成其元素的视图的类型。它必须以某种方式可构建。
std::views::iota
是一个帮助器自定义点对象,它遵循一种模式,在使用时可以产生更高性能/正确的结果。最终还是会回归std::ranges::iota_view
。所述模式是使用views::something
而不是ranges::something_view
.
当您将更多适配器嵌套在一起时,使用后者可能会产生更好的结果(主要是在编译时方面)。
一般来说,prefer views::meow https://brevzin.github.io/c++/2023/03/14/prefer-views-meow/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)