使用单个命令进行结构初始化(零值)

时间:2013-02-07 01:51:29

标签: c++ structure

结构:

struct element_data
{
    int size;
    int type;
    int nID;
    int attribute;
    double fValue;
    int mode;
    bool bTemp;
};

... 我必须用零手动初始化所​​有成员:

inline element_data() : //Empty constructor
    size(0),
    type(0),
    nID(0),
    attribute(0),
    fValue(0),
    mode(0),
    bTemp(false)
{}

太多命令,可能会减慢我的计算器速度。有没有其他方法可以做到这一点?例如,使用单个命令,所有值都将采用值...

2 个答案:

答案 0 :(得分:1)

没有。没有。至少,如果效率是您的关注点。

Here's why

我引用,从上面的链接,“所有其他条件相同,如果你使用初始化列表而不是赋值,你的代码将运行得更快。”

请记住,仅仅因为它是很多代码,并不意味着效率低下。事实上,优化的代码通常比未经优化的通用代码看起来更大,更复杂。这通常是因为您根据正在处理的数据的属性或您正在使用的算法进行快捷方式。

这种方法的优点是它不依赖于创建实例的代码来正确地将成员初始化为零,同时也是有效的。初始化列表确保您的结构成员始终正确初始化。

答案 1 :(得分:0)

由于您的struct element_data是POD,您可以通过两种方式将成员初始化为默认值:

element_data ed = element_data();

OR

element_data ed = {};

所有整数成员都将初始化为0,bool将初始化为false