首页 > 解决方案 > 只有第一个元素初始化为 1

问题描述

我有一个数组,例如:

int M[10] = { 1 };

我预计 M[0] ~ M[9] 都会被 1 填充,但是当我打印出来时,它没有,只有 M[0] 是 1,其他都是 0。

标签: c++visual-studio

解决方案


这是一个普遍的误解。你经常看到人们写这样的东西

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);

推荐阅读