C ++中各个元素的静态数组初始化
以下代码适用于GCC的C编译器,但不适用于C ++编译器。 是否有“快捷方式”在C ++中实现相同的结果?
int array[10] = { [1] = 1, [2] = 2, [9] = 9 };
编辑:嗯,我发现了这一点,澄清了一切。 http://eli.thegreenplace.net/2011/02/15/array-initialization-with-enum-indices-in-c-but-not-c/
这种初始化forms仅在C99标准中定义。 它不适用于C ++。 所以,你必须逐个分配你的元素:
int array[10] = { 0 }; array[1] = 1; array[2] = 2; array[9] = 9;
虽然gcc可能支持某种对C ++的扩展,但通常建议尽可能避免使用特定于编译器和平台的扩展。
使用标准C ++语法进行数组初始化:
int array[10] = { 0, 1, 2, 0, 0, 0, 0, 0, 0, 9 };
或编写一个函数来执行特定元素的初始化:
std::array create_initialized_array() { std::array values = { 0 }; values[1] = 1; values[2] = 2; values[9] = 9; return values; } std::array array = create_initialized_array();
或者使用lambda表达式:
std::array array = ([]() -> std::array { std::array values = { 0 }; values[1] = 1; values[2] = 2; values[9] = 9; return values; })();