配列(はいれつ/Array)

配列(はいれつ/Array)図解 H
PR
PR

配列(はいれつ/Array)とは、同じ種類の値を並べて、ひとまとまりとして扱える仕組みのことです。一つひとつに別々の名前を付ける代わりに、一つの名前と番号の組み合わせで、何十件でも何万件でも扱えるようになります。

現実世界に例えると、配列は番号の振られた下駄箱のようなものです。全体には一つの名前があり、個々の場所は番号で指し示します。三番目の靴を取り出す、というように、番号さえ分かれば目的の中身にたどり着けます。

配列(Array)図解

配列(はいれつ/Array)図解
※画像をクリックすると拡大表示します。

似た仕組みとの違い

仕組み 指し示し方 向いている場面
配列 0から始まる番号 順番に意味がある並び
連想配列 名前や文字列 項目名で引きたいとき
リスト 番号(可変長) 件数が変わる並び

番号は0から始まる

初学者が必ずつまずく決まりです。多くの言語では、先頭の要素を指す番号が1ではなく0で、五つ入っていれば最後は4番になります。これは、先頭からいくつ分ずれているかという考え方から来ています。うっかり最後の番号を間違えるのが、典型的な不具合の原因です。

まとめて繰り返し処理できる

配列の存在意義はここにあります。「並んでいるものを最初から最後まで順に処理する」という書き方ができるため、件数が何件であっても同じ数行で済みます。一件ずつ変数を用意していては、件数が変わるたびにコードを書き直すことになってしまいます。

メモリ上で連続して並ぶ

内部の仕組みを知っておくと理解が深まります。要素が記憶領域の上で隣り合って置かれているため、番号から位置を計算でき、何番目であっても一瞬で取り出せます。この速さが配列の強みで、大量のデータを順に処理する場面で効いてきます。

途中への追加は苦手

裏返しの弱点です。連続して並んでいる以上、途中に一つ挿し込むと、その後ろにあるすべてを一つずつずらす必要があります。頻繁に出し入れするならリストなど別の仕組みのほうが向きます。何をしたいかで使い分ける、という判断が求められます。

大きさが固定のものと可変のもの

言語による違いです。あらかじめ何件入るかを決めておく方式と、必要に応じて自動的に広がる方式があります。固定のものは速くて無駄がありませんが、あふれると重大な不具合につながります。可変のものは扱いやすい代わりに、裏側で作り直しが起きています。

範囲外を指すと危険

安全面での注意点です。用意した件数を超える番号を指定すると、エラーで止まるか、言語によっては関係のない領域を読み書きしてしまいます。後者は深刻な脆弱性の原因として長く問題にされてきました。番号を扱う処理では、範囲の確認を必ず入れます。

入れ子にして表を表す

応用として広く使われます。配列の中に配列を入れると、行と列を持つ表のような構造を作れます。画像を縦横の点の並びとして扱う、表計算のようなデータを持つ、といった場面で使われます。二重の番号で位置を指定する形になり、考え方は同じまま広がります。

あわせて知っておきたい用語

  • 変数(Variable):
    値を一時的に入れておく名前付きの入れ物です。
  • ハッシュ:
    名前をもとに値を取り出す仕組みのことです。
  • ポインタ:
    データの置き場所そのものを指す値です。
  • ループ:
    同じ処理を繰り返し実行する書き方です。

コメント

タイトルとURLをコピーしました