lil*_*roo 24 c++ arrays new-operator
我想以一种格式初始化一个数组,该格式使用逗号分隔花括号中包围的元素,例如:
int array[10]={1,2,3,4,5,6,7,8,9,10};
Run Code Online (Sandbox Code Playgroud)
但是,我需要使用new运算符来分配内存,例如:
int *array = new int[10];
Run Code Online (Sandbox Code Playgroud)
有没有办法结合这些方法,以便我可以使用new运算符分配内存并使用花括号初始化数组?
jog*_*pan 38
在新的C++标准(C++ 11)中,您可以这样做:
int* a = new int[10] { 1,2,3,4,5,6,7,8,9,10 };
Run Code Online (Sandbox Code Playgroud)
它被称为初始化列表.但在以前版本的标准中是不可能的.
进一步的细节(非常难读)相关的在线参考是在这里.我也尝试使用GCC和--std=c++0x选项,并确认它确实有效.
Luc*_*ore 21
您可以memcpy在分配后使用.
int originalArray[] ={1,2,3,4,5,6,7,8,9,10};
int *array = new int[10];
memcpy(array, originalArray, 10*sizeof(int) );
Run Code Online (Sandbox Code Playgroud)
我不知道任何语法可以让你自动执行此操作.
很久以后编辑:
const int *array = new int[10]{1,2,3,4,5,6,7,8,9,10};
Run Code Online (Sandbox Code Playgroud)