如何使用初始化列表来初始化数组元素?
我试着像这样(这犯规编译):如何使用初始化列表来初始化数组元素?
struct mystruct {
somestruct arr[4];
mystruct(somestruct val) : arr[0](val), arr[1](val), arr[2](val), arr[3](val) {}
};
如何在C这个做得最好++?
注意:我可能只想用这种方法设置数组元素的的一些。
在C++ 11,如果你想设置的所有元素:
mystruct(somestruct val) : arr{val,val,val,val} {}
在C++ 03或C++ 11,如果你只是想设置一些要素:
mystruct(somestruct val) {
arr[0] = val;
arr[1] = val;
arr[2] = val;
arr[3] = val;
}
太糟糕了,它不适用于visual-C++编译器,即时使用后者,认为有更好的方法。顺便说一句,编译器是否像上面那样快地优化后者? – Rookie 2011-12-30 17:56:43
为了编译,您可能需要使用-std = C++ 11标志。您应该拥有某种可以设置它的偏好设置窗格。 – 2014-03-05 21:09:56
使用'-std = C++ 0x'编译器选项,我所做的全部都是'classname :: clasname():array {num1,num2,num3,num4} {/ *所有构造函数或方法或变量赋值都放在这里*/}'。我最初对你的解决方案的末尾有些'{}'感到困惑,但后来很快意识到它是构造函数的主体:-) – enthusiasticgeek 2014-12-29 02:09:42
可能重复[我如何使用成员初始化列表来初始化它?](http://stackoverflow.com/questions/5602030/how-can-i-use-member-initialization-list-to-initialize-it ) – ildjarn 2011-12-30 17:50:05
+1用于尝试使用初始化程序列表,而不是在构造函数的主体内分配值。 – Andre 2011-12-30 17:56:41
@Andre,与“在构造函数体内赋值”有什么不同吗? (我不能测试,因为我没有编译器,迈克的例子使用) – Rookie 2011-12-30 17:58:10