我想以一种格式初始化一个数组,该格式使用逗号分隔花括号中包围的元素,例如:
int array[10]={1,2,3,4,5,6,7,8,9,10};
但是,我需要使用new运算符来分配内存,例如:
int *array = new int[10];
有没有办法组合这些方法,以便我可以使用new运算符分配内存并使用花括号初始化数组?
答案 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};