29

整数の配列を動的に作成する必要があります。静的配列を使用する場合、構文が

int a [5]={0};

すべての要素の値を0に正しく初期化します。

次のような動的配列を作成するときに同様のことを行う方法はありますか

int* a = new int[size];

配列のすべての要素をループする必要はありませんか?または、forループを使用して値を割り当てることが、依然として最適な方法ですか?ありがとう

4

6 に答える 6

45

もちろん、()値の初期化に使用してください:

 int* ptr = new int[size]();

(以前の密接に関連した質問へのこの回答から取得)

于 2012-04-24T09:04:53.633 に答える
5

私はします:

int* a = new int[size];
memset(a, 0, size*sizeof(int));
于 2012-04-24T09:01:42.790 に答える
4

値で要素を初期化します()

例:

int *p = new int[10];       // block of ten uninitialized ints
int *p2 = new int[10]();    // block of ten ints value initialized to 0
于 2015-09-18T11:22:03.497 に答える
4

std::vector<int>またはを使用することをお勧めしますstd::array<int,5>

于 2012-04-24T09:03:08.697 に答える
0
int *a=new int[n];
memset(a, 0, n*sizeof(int));

これにより、配列のすべてのバイトが 0 に設定されます。これについてchar *も、memset を使用できます。より正式な定義と使用法については、http://www.cplusplus.com/reference/clibrary/cstring/memset/を参照してください。

于 2012-04-24T10:30:55.230 に答える