我想要以用逗号分隔花括号中的元素的形式初始化一个数组,例如:
int array[10]={1,2,3,4,5,6,7,8,9,10};
然而,我需要使用new运算符来分配内存,例如:
int *array = new int[10];
有没有一种方法可以同时使用`new`运算符分配内存并使用花括号初始化数组?我想要以用逗号分隔花括号中的元素的形式初始化一个数组,例如:
int array[10]={1,2,3,4,5,6,7,8,9,10};
然而,我需要使用new运算符来分配内存,例如:
int *array = new int[10];
有没有一种方法可以同时使用`new`运算符分配内存并使用花括号初始化数组?你可以在分配内存之后使用 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};
std::copy(originalArray, originalArray+10, array)
和它们之间没什么区别。在C++11中,你可以使用std::end(originalArray)
代替originalArray+10
。 - Steve Jessopstd::end
专门用于数组,使用旧的 T *end(T (&ra)[N]) { return ra + N; }
技巧。对于运行时访问,没有存储新信息,并且如果originalArray
是指针,则无法工作。 - Steve Jessop