使用new运算符初始化数组

Use new operator to initialise an array

本文关键字:数组 初始化 运算符 new 使用      更新时间:2023-10-16

我想初始化一个数组,该数组的格式使用逗号分隔大括号中的元素,例如:

int array[10]={1,2,3,4,5,6,7,8,9,10};

然而,我需要使用新的运算符来分配内存,例如:

int *array = new int[10];

有没有一种方法可以组合这些方法,这样我就可以使用新的运算符分配内存,并用大括号初始化数组?

在C++(C++11)的新标准中,您可以这样做:

int* a = new int[10] { 1,2,3,4,5,6,7,8,9,10 };

它被称为初始值设定项列表。但在以前版本的标准中,这是不可能的。

这里有相关的在线参考资料和更多的细节(很难阅读)。我还使用GCC和--std=c++0x选项进行了尝试,并确认它确实有效。

分配后可以使用memcpy

int originalArray[] ={1,2,3,4,5,6,7,8,9,10};
int *array = new int[10];
memcpy(array, originalArray, 10*sizeof(int) );

我不知道有什么语法可以让你自动做到这一点。

稍后编辑:

const int *array = new int[10]{1,2,3,4,5,6,7,8,9,10};