求助: 基于范围的 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已跳过 ==========