c++ - 在初始化列表中初始化数组的更好方法
问题描述
所以让我们假设我有这个结构
struct CAddition {
int x;
int y;
int c;
int z[3];
int result() {
return x + y;
}
CAddition();
~CAddition();
};
CAddition::CAddition()
:x(0)
,y(2)
,z()
,c(result())
{
}
现在在构造函数中我已经初始化了 z ,它是结构的一个数组成员, ,z()
它输出带有零的初始化值,现在当我尝试这种其他语法时
,z{}
和
,z{0,0,0}
它们都输出相同的结果 除了上述两种方法之外,是否有更有效的方法在构造函数中初始化数组?这 3 种方法有什么区别吗?我检查了不同的网站进行初始化,他们使用了这两种方法
解决方案
如果通过“更有效的方式”您的意思是花费更少的时间来构建CAddition
,那么没有。
最快的构造方法CAddition
是将数组初始化为全零,这是默认行为。
std::vector
包含 3 个项目的数组需要的时间可以忽略不计,但如果数组的大小非常大,则可能需要很长时间,在这种情况下,最好使用reserve
一些空间来代替。
推荐阅读
- node.js - node.js中可以同时运行两段代码吗?
- d - 为什么使用 D 中的 char[] 数组抛出类型 Result 的 No [] 运算符重载?
- ios - 需要一些想法来在 XCUI 测试中添加智能等待
- javascript - 在 JS 中单独显示循环数组项
- css - 在微型 mce 编辑器中自定义插入/编辑窗口
- javascript - 在 KnockoutJs 中未检测到文本
- python - pymongo.find() 超时但使用与集合相同的体积限制
- javascript - 烧瓶开发的Javascript代码问题
- reactjs - 反应 useRef 未定义
- cors - 上传 Nifi 模板响应 403 错误 + 浏览器记录无效的 CORS 请求