C++ 使用单个命令进行结构初始化(零值)
结构:C++ 使用单个命令进行结构初始化(零值),c++,structure,C++,Structure,结构: struct element_data { int size; int type; int nID; int attribute; double fValue; int mode; bool bTemp; }; …我必须手动将所有成员初始化为零: 命令太多,可能会减慢我的计算器。还有其他方法可以做到这一点吗?例如,使用单个命令,所有值都将取零值…否。没有。至少,如果你关心效率的话 我引用上面链接中的话,“在所有其他条件相同的情况
struct element_data
{
int size;
int type;
int nID;
int attribute;
double fValue;
int mode;
bool bTemp;
};
…我必须手动将所有成员初始化为零:
命令太多,可能会减慢我的计算器。还有其他方法可以做到这一点吗?例如,使用单个命令,所有值都将取零值…否。没有。至少,如果你关心效率的话 我引用上面链接中的话,“在所有其他条件相同的情况下,如果使用初始化列表而不是赋值,代码将运行得更快。” 记住,仅仅因为代码太多,并不意味着它的效率较低。事实上,优化的代码通常比未优化的通用代码看起来更大、更复杂。这通常是因为您根据正在处理的数据的属性或正在使用的算法选择捷径
这种方法的优点是,它不依赖于创建实例的代码来正确地将成员初始化为零,同时效率也很高。初始值设定项列表确保结构成员始终正确初始化 由于您的struct element_数据是POD,您可以通过两种方式将成员初始化为默认值:
element_data ed = element_data();
或
所有整数成员将被初始化为
0
,bool将被初始化为false
您是否绝对确定这是您的性能瓶颈?为了性能的利益而试图避免使用解决问题的语言功能通常是一个非常糟糕的主意,除非你有文件证明这确实是问题所在。你可以伪造它。但是源代码命令的数量不会影响此操作的速度。这是最快的速度了。在考虑如何以不同的方式进行之前,您应该测量它是否真的减慢了速度。element_data object={0}代码>初始值设定项列表是a=b
c=d
等的优化版本。它可能没有您想象的那么糟糕。第二个示例引发编译错误,第一个定义只有在我手动初始化时才能正常工作。您有什么编译器?顺便说一句,第一个构造函数不需要默认构造函数。请参见此:我有VisualC++,和<代码> EntEntEDATE= { 0 };<代码>-这是正确的。嗯,您不需要在{}
中使用0
,因为将第一个成员初始化为0,将其余成员初始化为默认值所有值都是“零”。我现在很高兴
element_data ed = element_data();
element_data ed = {};