忍者ブログ
[177] [176] [175] [174] [173] [172] [171] [170] [169] [168] [167]

DATE : 2024/04/25 (Thu)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/10/02 (Mon)

(;´Д`)そういえば、配列については全然触れていませんでした。そこで、この記事で簡単に触れたいと思います。

Java では、配列は次のように生成します。

int[] numbers = new int[3];

配列の要素数は、変数や定数で指定することもできます。

int[] numbers = new int[count];
int[] numbers = new int[COUNT];

C++ の場合は、これまでにオブジェクトを生成してきた場合と同様に、静的に宣言する方法と動的に生成する方法があります。

静的に宣言するには、次のようになります。

int numbers[3];

ただし、静的に宣言する場合、変数を要素数の指定に使うことはできません。静的な宣言の場合に使えるのは、整数値と定数のみです。

ちなみに、定数は次のように宣言します。

static const int COUNT = 3;

(;^ω^)Java の static final と似ていますね。

初期化も同時に行うには、次の通りです。

int numbers[3] = {1, 2, 3};

また、動的に生成するには、次のようにします。

int* numbers = new int[3];

この場合は、変数も要素数の指定に使えます。

初期化も同時に行うには、次の通りです。

int* numbers = new int(1, 2, 3);

なお、動的に生成した配列を解放するには、次のようにします。

delete [] numbers;

delete の後に「[]」を付けるところがミソです。「[]」を付けない場合、配列全体のメモリは解放されますが、numbers が直接指すオブジェクト(numbers[0])のデストラクタしか呼ばれません。すると、numbers[1]~[9]のデストラクタが呼ばれず、メモリリークを起こす可能性があります。

ちなみに、Java の配列と C++ と配列には大きな違いが2つあります。

  • C++ の配列は要素数を保持しない。
  • C++ の配列の要素は未初期化状態。

Java では、次のようにすることで配列の要素数を取得できました。

numbers.length

しかし、C++ の配列そのものから要素数を取得する方法はありません。

また、Java の配列は、生成すると全要素が自動的に初期化されます。例えば、int 型の配列の場合は、生成時に全要素が0に初期化されます。

しかし、C++ の配列は、静的な宣言、動的な生成ともに要素が初期化されていません。そのため、配列を初期化する処理が必要になります。

(;^ω^)ここらへんは実に C らしいですね

ちなみに、C++ の標準ライブラリには vector というクラスがあります。このクラスは、要素数が動的に変わる配列を実現したもので、要素数を取得できたり、要素を追加・削除と言った処理も簡単に行えるようになります。

(;^ω^)そういえば、Java にも java.util.Vector というクラスがありました。

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
ブログ内検索
最近の状況
リンク
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック