配列(array)とは、プログラミング言語において多数の同様なデータを扱う際に用いられるデータ構造の一種である。
概要
例えば、ここにあるクラスで実施された数学の試験の点数のデータが有るとしよう。このデータを配列の無いプログラミング言語で一度に扱おうとすると math1, math2, …… , math40, …… のような変数を一々用意しなければならない。しかしこれはあまりにも面倒であるため、普通はプログラミング言語によって簡単に複数の似たようなデータを扱える配列というデータ構造が用意されている。
配列 math にデータが格納されるとすると、前述のデータは math[1], math[2], …… のようにアクセスする事が出来る。ここの 1 や 2 といった数字は添字と呼ばれ、0 か 1 から始まる非負整数によって指定する事が多い。0から始まるものを0オリジン、1から始まるものを1オリジンと呼ぶことがある。
更に変数を添字に指定する事によって動的にアクセスするデータを変更できる点が、通常の変数には無い大きな利点となる。たとえば math[n] と書いておけば、変数 n に 4 が格納されていれば 4 番目、n に 5 が格納されていれば 5 番目のデータを取り出す事が出来る。
通常は配列を宣言する場合にその大きさ(長さ)を指定するが、大きさを指定せずとも必要に応じてデータ領域を確保するような配列も有る。それらは動的配列と呼ばれる。動的配列が作成可能かどうかはプログラミング言語に依存する。
連想配列
一部のプログラミング言語には、連想配列(associative array)といって数値以外の文字列等を添字として指定できるデータ構造を持つものがある。これによってどのようなデータにアクセスしているのかをより直感的に理解できるようになる場合が有る。例えば、A さんの試験の結果を配列に格納する場合、A[0] に英語 A[1] に数学の点数を格納する、と記述するよりも A["english"] と A["math"] に格納するとした方が分かり易い。
写像の一種とみなすことが出来るのでMapとか、添字を見出しに見立ててDictionaryとも呼ばれる。
多次元配列
また、配列を二次元以上にできる多次元配列を実現できるプログラミング言語も有る。これにより、例えばクラス全員の試験結果を多次元配列 ExamData に格納して、ExamData[3]["english"] で 出席番号 3(添字が0から始まる場合は4番目) の生徒の英語の成績にアクセスするように出来る。
オブジェクトとの違い
連想配列に似た構造を持つ物体にオブジェクトがあるが、連想配列とオブジェクトは異なる概念である。
連想配列というのはあくまでグループ化されたデータや統計化されたデータを扱いやすくするものであるのに対し、オブジェクトとはデータが持つ特徴や属性、数値を分類させたものである。
一応はどっちでも記述できるが、それらのデータがグループに属するのか、あるいは個のデータの関連情報を見たいのかで使い分けるといいだろう。
関連項目
- 4
- 0pt