0

结构:

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)
{}

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

4

2 回答 2

1

不,没有。至少,如果您关心的是效率。

这就是为什么

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

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

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

于 2013-02-07T02:08:45.637 回答
0

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

element_data ed = element_data();

或者

element_data ed = {};

所有整数成员将被初始化为0并且 bool 将被初始化为false

于 2013-02-07T02:13:23.253 回答