所以假设我有这个结构
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,它是struct ,z()
的数组成员,它用零输出初始化值,现在当我尝试这个其他语法时
,z{}
和
,z{0,0,0}
他们都输出相同的结果 有没有一种更有效的方法在构造函数中初始化一个数组,除了上面两个,并且3个方法有什么不同,我检查了不同的网站进行初始化,他们使用了这两种方法
答案 0 :(得分:0)
如果要使用默认值0初始化数组中的所有元素,则使用z {0}非常快。或者,如果要使用值-1初始化,可以使用memset():
CAddition::CAddition()
:x(0)
,y(2)
,c(result())
{
memset(z, -1, 3 * sizeof(int));
}
请注意,memset()适用于字节,而不是数字。如果需要使用数字填充数组,则可以使用fill_n()。
答案 1 :(得分:0)
如果通过“更有效的方式”,你的意思是花费更少的时间来构建CAddition
,那么就没有。{/ p>
构造CAddition
的最快方法是将数组初始化为全零,这是默认行为。
对于3个项目的数组,花费的时间可以忽略不计,但如果数组的大小非常大,则可能需要很长时间,在这种情况下,最好使用std::vector
和reserve
代替了一些空间。