You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写C++遍历整数序列的范围for循环?C++20/23方案问询

C20/C23 遍历整数序列的范围for循环方案

在C++20及之后的标准中,我们可以利用标准库的**范围视图(Range Views)**实现更简洁的整数序列遍历,替代传统的for循环写法。

C++20 实现方式

借助std::views::iota(需包含<ranges>头文件),它能生成连续的整数序列视图,直接适配范围for循环:

遍历左闭右开区间(与传统循环逻辑一致)

比如遍历从0到99的整数(不包含100):

#include <ranges>
#include <iostream>

int main() {
    for (int i : std::views::iota(0, 100)) {
        // 处理整数i,示例:打印
        std::cout << i << ' ';
    }
    return 0;
}

std::views::iota(a, b)会生成从a起始、到b结束(不包含b)的整数序列,完全对应传统for (auto i = a; i < b; ++i)的逻辑。你也可以直接使用std::iota_view(0, 100),它和std::views::iota(0, 100)是等价的。

C++23 增强写法

C++23对std::views::iota做了扩展,支持单参数形式生成无限整数序列,配合std::views::take可以灵活指定遍历的元素数量:

从起始值开始取N个元素

比如从0开始取100个元素(即遍历0到99):

#include <ranges>
#include <iostream>

int main() {
    for (int i : std::views::iota(0) | std::views::take(100)) {
        std::cout << i << ' ';
    }
    return 0;
}

如果需要从非0起始值开始取元素,比如从10开始取20个(遍历10到29):

for (int i : std::views::iota(10) | std::views::take(20)) {
    // 处理逻辑
}

内容的提问来源于stack exchange,提问作者user2138149

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:26:04