【问题标题】:Only first element init as 1 [duplicate]只有第一个元素初始化为 1 [重复]
【发布时间】:2019-10-07 09:31:53
【问题描述】:

我有一个数组,例如:

int M[10] = { 1 };

我原以为M[0]~M[9]都会被1填满,但是当我打印出来的时候却没有,只有M[0]是1,其他都是0。

【问题讨论】:

    标签: c++ visual-studio


    【解决方案1】:

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

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

    【讨论】:

    • 如果我需要将所有元素初始化为 1 怎么办?需要一个 for 循环来分配它吗?
    • 如果您需要将所有元素初始化为1,您可以使用std::fill 或全部指定。抱歉,不是很清楚吗?您也可以使用 for 循环,但没有理由使用 std::fill
    • 对不起,我没有注意到。很清楚。
    猜你喜欢
    • 2015-11-11
    • 2019-06-26
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2012-11-09
    相关资源
    最近更新 更多