| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1263 人关注过本帖
标题:求助: 基于范围的 for 循环
只看楼主 加入收藏
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
结帖率:97.26%
收藏
已结贴  问题点数:20 回复次数:4 
求助: 基于范围的 for 循环
程序代码:
#include <iostream>
#include <vector>

int main()
{
    std::vector<int> v = { 0, 1, 2, 3, 4, 5 };

    for (const int& i : v) // 以 const 引用访问
        std::cout << i << ' ';
    std::cout << '\n';

    for (auto i : v) // 以值访问,i 的类型是 int
        std::cout << i << ' ';
    std::cout << '\n';

    for (auto&& i : v) // 以转发引用访问,i 的类型是 int&
        std::cout << i << ' ';
    std::cout << '\n';

    const auto& cv = v;

    for (auto&& i : cv) // 以转发引用访问,i 的类型是 const int&
        std::cout << i << ' ';
    std::cout << '\n';

    for (int n : {0, 1, 2, 3, 4, 5}) // 初始化器可以是花括号初始化器列表
        std::cout << n << ' ';
    std::cout << '\n';

    int a[] = { 0, 1, 2, 3, 4, 5 };
    for (int n : a) // 初始化器可以是数组
        std::cout << n << ' ';
    std::cout << '\n';

    for ([[maybe_unused]] int n : a)
        std::cout << 1 << ' '; // 不必使用循环变量
    std::cout << '\n';

    for (auto n = v.size(); auto i : v) // 初始化语句(C++20)
        std::cout << --n + i << ' ';
    std::cout << '\n';

    for (typedef decltype(v)::value_type elem_t; elem_t i : v)
        // typedef 声明作为初始化语句(C++20)
        std::cout << i << ' ';
    std::cout << '\n';

    //for (using elem_t = decltype(v)::value_type; elem_t i : v)
    //    // 别名声明作为初始化语句,同上(C++23)
    //    std::cout << i << ' ';
    //std::cout << '\n';
}


图片附件: 游客没有浏览图片的权限,请 登录注册


已启动重新生成...
1>------ 已启动全部重新生成: 项目: test, 配置: Debug x64 ------
1>main.cpp
1>C:\Users\Administrator\source\repos\test\test\main.cpp(35,11): warning C5051: 特性“maybe_unused”至少需要“/std:c++17”;已忽略
1>C:\Users\Administrator\source\repos\test\test\main.cpp(39,10): error C7585: 具有初始值设定项的 for 语句(基于范围)至少需要 "/std:c++20"
1>C:\Users\Administrator\source\repos\test\test\main.cpp(43,10): error C7585: 具有初始值设定项的 for 语句(基于范围)至少需要 "/std:c++20"
1>已完成生成项目“test.vcxproj”的操作 - 失败。
========== “全部重新生成”: 0 成功,1 失败,0已跳过 ==========
搜索更多相关主题的帖子: std cout test for int 
2022-07-08 12:28
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册:2010-3-16
收藏
得分:10 
图片附件: 游客没有浏览图片的权限,请 登录注册

直接过
2022-07-08 14:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
我用VC2022,也设成 /std:c++20,没有任何警告和错误。
你喜欢截图,却又不肯截全。图上你设置的是 Debug Win32 下的编译参数,但我怀疑你编译运行的并不是 Win32.

    //for (using elem_t = decltype(v)::value_type; elem_t i : v)
    //    // 别名声明作为初始化语句,同上(C++23)
    //    std::cout << i << ' ';
    //std::cout << '\n';
我将VC2022设置成 /std:c++23 也不行;gcc可以,看来vc还差点儿
2022-07-08 14:49
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
收藏
得分:0 
回复 2楼 apull
见鬼了,没找到原因。
又没问题了。。。
图片附件: 游客没有浏览图片的权限,请 登录注册


这是什么原因呀!!!

[此贴子已经被作者于2022-7-8 18:02编辑过]

2022-07-08 18:01
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
收藏
得分:0 
回复 3楼 rjsp
对了,就是这个问题。。。。
终于找到原因了。。。
2022-07-08 21:38
快速回复:求助: 基于范围的 for 循环
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033995 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved