使用new运算符初始化数组

时间:2012-03-07 14:52:30

标签: c++ arrays new-operator

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

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

但是,我需要使用new运算符来分配内存,例如:

int *array = new int[10];

有没有办法组合这些方法,以便我可以使用new运算符分配内存并使用花括号初始化数组?

2 个答案:

答案 0 :(得分:37)

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

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

它被称为初始化列表。但是在以前版本的标准中是不可能的。

相关的在线参考文献包含更多详细信息(非常难以阅读)是here。我也尝试使用GCC和--std=c++0x选项并确认它确实有效。

答案 1 :(得分:20)

您可以在分配后使用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};