For loop 有没有办法在C++;17没有内存费?

For loop 有没有办法在C++;17没有内存费?,for-loop,c++17,For Loop,C++17,有没有一种方法可以在C++17或Boost中创建远程for循环而无需充电,例如: for (int i : {0,1,2,3,4,5,6}) { <...> } for(inti:{0,1,2,3,4,5,6}){ } 或 char-arr[100]; 用于(字符i:arr){ } 至少是非内存优化的。而且太冗长了 应该怎么写 除了以下方面,我还对其他方面感兴趣: for (int i = 100; i > 0; i--) { <...> }

有没有一种方法可以在C++17或Boost中创建远程for循环而无需充电,例如:

for (int i : {0,1,2,3,4,5,6}) {
    <...>
}
for(inti:{0,1,2,3,4,5,6}){
}

char-arr[100];
用于(字符i:arr){
}
至少是非内存优化的。而且太冗长了

应该怎么写

除了以下方面,我还对其他方面感兴趣:

for (int i = 100; i > 0; i--) {
    <...>
}
for(int i=100;i>0;i--){
}

C++20
将它们作为标准库的一部分,但从现在起,您可以使用Eric Niebler的
ranges-v3

通过
范围::视图::物联网
可以轻松实现您想要做的事情,它惰性地生成连续的元素:

#include <iostream>
#include <range/v3/all.hpp>

int main() {
    using namespace ranges;

    for (int i : view::iota(0, 10)) {
        std::cout << i << ' ';
    }
}
#包括
#包括
int main(){
使用名称空间范围;
对于(inti:view::iota(0,10)){

std::cout In boost:irange、counting_range等。只是出于couriosity-这有什么好处?@BenjaminBihler随需应变计算可能会带来严重的性能优势。请看我的答案-我鼓励您阅读
C++20
的范围。@Fureeish不,我的意思是为什么它必须基于范围?为什么不
呢(int index=0;index@BenjaminBihler也许OP对基于范围的计算是否有支持感到好奇。也许OP只是对实现这一点的其他方式感到好奇。无论哪种方式,我都同意你提出的原因。
#include <iostream>
#include <range/v3/all.hpp>

int main() {
    using namespace ranges;

    for (int i : view::iota(0, 10)) {
        std::cout << i << ' ';
    }
}