c++ - 初始化数组的更好方法

标签 c++ arrays

看起来是个新手问题,但是这个函数被调用了很多次,老实说每秒调用数千次,所以这里的优化是至关重要的。什么是最好的方法?

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/

相关文章:

c++ - 如何缩短图像的文件名/路径,使其适用于所有机器

c++ - 将 float 宏与 int* 一起切换 - 它有什么作用?

javascript - 使用对象数组动态生成新数组

javascript - arrayToList 产生奇数输出。怎么了?

C++ 将文本文件读入数组

c++ - 可以在运行时更改 C++ 类的默认值吗?

c++ - 信号和解锁命令

c# - 在 C# 中的字符串数组中搜索 Array.FindIndex 时出现 Null 异常

c++ - 如何将我的程序指向我输入到列表中的值? C++

Java 字符串数组