Подтвердить что ты не робот

Использовать новый оператор для инициализации массива

Я хочу инициализировать массив в формате, который использует запятые для разделения элементов, окруженных фигурными фигурными скобками, например:

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

Однако мне нужно использовать новый оператор для выделения памяти, например:

int *array = new int[10];

Есть ли способ объединить тезисы, чтобы я мог выделить память с помощью нового оператора и инициализировать массив фигурными фигурными скобками?

4b9b3361

Ответ 1

Вы можете использовать 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};

Ответ 2

В новом стандарте для С++ (С++ 11) вы можете сделать это:

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

Он вызвал список инициализаторов. Но в предыдущих версиях стандарта это было невозможно.

Соответствующая онлайн-ссылка с дальнейшими подробностями (и очень трудная для чтения) здесь. Я также попытался использовать GCC и опцию --std=c++0x и подтвердил, что он действительно работает.