Использовать новый оператор для инициализации массива
Я хочу инициализировать массив в формате, который использует запятые для разделения элементов, окруженных фигурными фигурными скобками, например:
int array[10]={1,2,3,4,5,6,7,8,9,10};
Однако мне нужно использовать новый оператор для выделения памяти, например:
int *array = new int[10];
Есть ли способ объединить тезисы, чтобы я мог выделить память с помощью нового оператора и инициализировать массив фигурными фигурными скобками?
Ответы
Ответ 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
и подтвердил, что он действительно работает.