繁体   English   中英

基于范围的切片循环?

[英]Range-based for loop of slice?

有没有办法做一个基于范围的for循环的向量的一部分? 例如,我想迭代向量的前5个元素:

for(auto& elem : my_vector[0:5]) {  // Syntax obviously doesn't exist
  do_stuff(elem);
}

我可以编写自己的容器, 如何使我的自定义类型与“基于范围的for循环”一起使用? 但我希望有一个更简单的方法来提升或一些相关的库。

C ++ 20似乎包含“范围”,但在20之前是否有类似的东西?

事实上的标准(库)就是range-v3 - 它的外观如下:

for (auto& elem : ranges::view::slice(my_vector, 0, 5)) { ... }
// or
for (auto& elem : ranges::view::take(my_vector, 5)) { ... }

如果你需要C ++ 03中的范围支持, Boost.Range是另一种选择,尽管它的实现相当简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM