簡體   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