看起来是个新手问题,但是这个函数被调用了很多次,老实说每秒调用数千次,所以这里的优化是至关重要的。什么是最好的方法?
struct CHOLDELEM
{
DWORD dwColor[3], dwItemId[3];
int nPos[3], nLength[3];
CItemElem* pItem[3];
CHOLDELEM()
{
for( int i=0; i<=3; i++ )
{
dwColor[i] = dwItemId[i] = 0;
nPos[i] = nLength[i] = 0;
pItem[i] = NULL;
}
}
};
或使用memset
?
memset(dwColor, 0, sizeof(dwColor));
或其他方法。
最佳答案
只要你只对零初始化感兴趣,你可以简单地做
CHOLDELEM() : dwColor(), dwItemId(), nPos(), nLength(), pItem()
{}
(不需要 C++11)。
但是,您可能想看一下您的编译器为它生成的代码。如果它不是最优的,那么一个更好的主意可能是将你的结构保留为 POD(无构造函数)并在你声明该类型的对象时“从外部”初始化它
CHOLDELEM c = {};
关于c++ - 初始化数组的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11726798/