c++ - 只有第一个元素初始化为 1
问题描述
我有一个数组,例如:
int M[10] = { 1 };
我预计 M[0] ~ M[9] 都会被 1 填充,但是当我打印出来时,它没有,只有 M[0] 是 1,其他都是 0。
解决方案
这是一个普遍的误解。你经常看到人们写这样的东西
int m[10] = { 0 };
“将所有元素初始化为0
”;但是,实际上只是将第一个元素初始化为0
,其余元素默认初始化(为 0,这就是它起作用的原因)。他们真的可以写int m[10] = {};
你有同样的问题:你只初始化第一个元素,1
然后其余的默认为0
. 您可以指定所有参数,也可以使用std::fill
:
int m[10] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
int n[10];
std::fill(std::begin(n), std::end(n), 1);
推荐阅读
- python - 在 FOR 循环中运行 IF 语句时 SQLite 错误和退出(在第一个结果之后)
- python - 不正确使用 dict() 导致的令人困惑的错误消息
- android - 如何从驾驶执照中获取有关在android studio的应用程序相机中扫描它的信息
- javascript - 如何将 json 转换为 javascript 对象?
- spring - Spring Boot 应用程序中的 NonUniqueResultException
- json - 如何从firebase实时数据库中获取位置标记并使用swift添加到Xcode中的地图视图
- javascript - 如何改变文本输入的方向。imask.js?
- reactjs - 如何摆脱作为 React Native Web 库的一部分添加的内联样式?
- javascript - 如何以编程方式清空地图上的绘制图层
- java - micronaut 微服务的内存消耗