web-dev-qa-db-ja.com

new演算子を使用して配列を初期化します

中括弧で囲まれた要素をコンマで区切る形式で配列を初期化します:

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

ただし、new演算子を使用してメモリを割り当てる必要があります(例:

int *array = new int[10];

これらのメソッドを組み合わせて、new演算子を使用してメモリを割り当て、中括弧で配列を初期化する方法はありますか?

23
lilroo

割り当て後に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};
20
Luchian Grigore

新しいC++標準(C++ 11)では、これを行うことができます。

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

初期化リストと呼ばれます。しかし、以前のバージョンの標準では不可能でした。

関連するオンラインリファレンス(詳細は非常に読みにくい)は here です。また、GCCと--std=c++0xオプションと実際に動作することを確認しました。

38
jogojapan