動的配列とは
動的配列は、コンピュータープログラミングで使用されるデータ構造であり、複数のコンピューティングオブジェクトを単一のグループとして保持し、さまざまな数のオブジェクトに対応できるように自由にサイズ変更できます。 グループは単一の連続したメモリブロックに保持されるため、要素へのアクセスは効率的かつ高速です。 動的配列は、使用されるコンピューター言語に応じて、ベクトルまたはリストとも呼ばれます。 これらの名前にもかかわらず、リストやベクトルは配列とは異なる方法で実装される可能性があるため、特定のリストやベクトルは動的な配列ではない場合があります。
C ++には、ベクターと呼ばれる単一の動的配列クラスが含まれています。これは、標準テンプレートライブラリと呼ばれるクラスのグループにあります。 このクラスをサポートする配列には、イテレータまたはインデックスによってアクセスできます。 必要に応じてサイズを変更できることは大きな利点ですが、プログラマーは見た目ほど堅牢ではないため、プログラマーを誤った安心感に誘う可能性があります。 ベクトルを支える動的配列は、アクセス要求が有効であることを保証できません。 静的配列と同様に、動的配列は、プログラムが割り当てられていないメモリにアクセスしようとすると、境界チェックとメモリ破損の問題を引き起こす可能性があります。
Javaには、Vector、ArrayList、およびCopyOnWriteArrayListの3つの異なる動的配列クラスが含まれています。 配列内の要素はインデックスによってのみアクセスされ、配列外のインデックスにアクセスしようとしても、通常はメモリ破損の問題は発生しません。 Java Vectorクラスは、C ++ vectorクラスとほぼ同等であり、複数のスレッドによるアクセスを可能にするために同期されていません。 対照的に、ArrayListとCopyOnWriteArrayListは両方ともスレッドセーフです。 3つのうち、CopyOnWriteArrayListは、新しい値が配列に書き込まれるたびに動的配列を完全に再作成するため、最も労働集約的なクラスです。
動的配列は、関連するコンピューター言語に関係なく基本的に同じ方法で実装されますが、特定の言語によっては、その上に他の機能が構築される場合があります。 静的配列と同様に、動的配列は、すべて同じ種類のオブジェクトである限り、内部に格納できるオブジェクトの種類を制限しません。 プログラマーが動的配列に直接アクセスする必要はありません。 簡単に使用できるように配列をラップするクラスを介して常に実行できます。 これらの配列を適切に使用することで、プログラマーはコード内のデータ編成を支援し、また簡単なメンテナンスに役立つ理解しやすいコードを作成できます。