C++ 如何使用初始值设定项列表初始化数组元素?

C++ 如何使用初始值设定项列表初始化数组元素?,c++,visual-c++,C++,Visual C++,我正在尝试这样的东西(不编译): 这是如何在C++中最好的? 注意:我可能只想用这个方法设置一些数组元素。在C++11中,如果要设置所有元素: mystruct(somestruct val) : arr{val,val,val,val} {} mystruct(somestruct val) { arr[0] = val; arr[1] = val; arr[2] = val; arr[3] = val; } 在C++03或C++11中,如果只想设置某些元素

我正在尝试这样的东西(不编译):

<>这是如何在C++中最好的?


注意:我可能只想用这个方法设置一些数组元素。

在C++11中,如果要设置所有元素:

mystruct(somestruct val) : arr{val,val,val,val} {}
mystruct(somestruct val) {
    arr[0] = val;
    arr[1] = val;
    arr[2] = val;
    arr[3] = val;
}
在C++03或C++11中,如果只想设置某些元素:

mystruct(somestruct val) : arr{val,val,val,val} {}
mystruct(somestruct val) {
    arr[0] = val;
    arr[1] = val;
    arr[2] = val;
    arr[3] = val;
}

如果试图使用初始值设定项列表而不是在构造函数体中赋值,则可能重复+1。@Andre,“在构造函数体中赋值”与“在构造函数体中赋值”有性能差异吗?(我无法测试,因为我没有Mike的示例使用的编译器)@Rookie如果不使用初始值设定项列表,则在赋值之前将默认构造这些值。因此,使用初始值设定项列表通常会更快。更重要的是,如果使用初始值设定项列表,意图更清晰(至少在我看来;-)。不使用初始化列表(如果可能)是过早的悲观(参见(C++编码标准))(如果你想提高C++技巧,我建议阅读)。请记住,还有过早的优化;-)@Andre:Default initialized,不一定是Default constructed——事实上,对于POD类型,根本不会进行初始化。太糟糕了,它在visual c++编译器上不起作用,我现在正在使用后者,认为有更好的方法。顺便问一下,编译器优化lat吗ter与上面一样快?为了编译,您可能需要使用-std=c++11标志。您应该有某种可以设置它的首选项窗格。使用
-std=c++0x
编译器选项,我所做的就是
classname::clasname():数组{num1,num2,num3,num4}{/*所有构造函数、方法或变量赋值都在这里*/}
。最初我对您的解决方案中的
{}
感到困惑,但随后很快意识到它是构造函数的主体:-)