在初始化列表中初始化数组的更好方法



所以假设我有这个结构

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 种方法有什么区别吗,我检查了不同的网站进行初始化,他们使用了这两种方法

如果要使用默认值 0 初始化数组中的所有元素,使用 z{0} 非常快。或者如果你想用值 -1 初始化,你可以使用 memset((:

CAddition::CAddition()
:x(0)
,y(2)
,c(result())
{
memset(z, -1, 3 * sizeof(int));
}

请注意,memset(( 适用于字节,而不是数字。如果需要用数字填充数组,则可以改用fill_n((。

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

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

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

最新更新