c++ - 如何在基于范围的 for 循环中进行初始化
问题描述
我正在尝试在基于范围的 for 循环中使用索引,所以我创建了如下代码。我参考这个网站http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0614r0.html
#include <vector>
int main(void)
{
std::vector<double> vector1(100);
for (std::size_t _index = 0; auto& _value : vector1)
{
_value = 10 + 5; //This code is for test.
++_index;
}
return 0;
}
但是,它给了我几条错误消息(无法推断自动类型,无法使用未初始化的 _value 等。/抱歉,我的语言不是英语,错误消息也是如此)
为什么会这样?当我if
像这样使用带有初始化的语句时,
if (bool is_valid = false; is_valid)
{
//do something
}
它工作得一样好。
解决方案
这种语法应该是即将推出的 C++20 标准的一部分,请参阅https://en.cppreference.com/w/cpp/language/range-for
目前没有符合 C++20 的编译器,因此难怪您会遇到编译错误。
推荐阅读
- html - HTML 不打印烧瓶返回的全名
- c# - 在没有模型绑定的情况下发布到 .NET Core Web API 控制器
- javascript - LocalStorage 不保留值
- c++ - 获得向量/数组数据大小参考的好语法?
- javascript - 调用返回数字为 fn(10) 或 fn * 10 的函数
- python - 2003: Can't connect to MySQL server on '127.0.0.1:10652' (10061 No connection could be made because the target machine拒绝了)
- reactjs - React 本机 ref 属性:Function vs React.createRef()
- r - ggplot2散点图中离散x轴和连续y轴的自定义缩放
- php - 为什么要在 php 中包含所有 HTLML 代码?
- javascript - 我的 javascript 函数不会更新全局变量。为什么会这样?