C++:对于这个系列的视图结构,还有什么不同要求的替代方案?



为了删除代码中的手动逻辑,我使用了这个结构:

std::ranges::drop_view a { std::ranges::take_view(my_range, my_range.size() -X), Y};

带有我在运行时传递的X和Y值。

即使我检查了算法,我也找不到具有以下约束的更短的方法:

  1. 不要超过或低于我想要的范围,如果范围有0个元素,不要做任何事情->没有溢出
  2. 非拥有->没有副本

ranges::subranges不符合这些要求。

感谢

你可以组成take_viewdrop_view到一个新的适配器

auto take_and_drop = [](auto n, auto m) {
return std::views::take(n) | std::views::drop(m);
};
auto a = my_range | take_and_drop(my_range.size() - X, Y);

相关内容

  • 没有找到相关文章