首页 > 解决方案 > 在初始化列表中初始化数组的更好方法

问题描述

所以让我们假设我有这个结构

struct CAddition {
    int x;
    int y;
    int c;
    int z[3];
    int result() { 
        return x + y; 
    }
    CAddition();
    ~CAddition();
};
CAddition::CAddition()
    :x(0)
    ,y(2)
    ,z()
    ,c(result())
{

}

现在在构造函数中我已经初始化了 z ,它是结构的一个数组成员, ,z()它输出带有零的初始化值,现在当我尝试这种其他语法时

,z{} 

,z{0,0,0}

它们都输出相同的结果 除了上述两种方法之外,是否有更有效的方法在构造函数中初始化数组?这 3 种方法有什么区别吗?我检查了不同的网站进行初始化,他们使用了这两种方法

标签: c++arraysinitializer-list

解决方案


如果通过“更有效的方式”您的意思是花费更少的时间来构建CAddition,那么没有。

最快的构造方法CAddition是将数组初始化为全零,这是默认行为。

std::vector包含 3 个项目的数组需要的时间可以忽略不计,但如果数组的大小非常大,则可能需要很长时间,在这种情况下,最好使用reserve一些空间来代替。


推荐阅读