所以假设我有这个结构
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::vector
并reserve
一些空间。