Array Considered Harmful あるいは、なぜC言語のポインタは難しいのか 大昔、子供向けのBASIC入門の本を読んだら、「配列でつまづく人が多い」と書いてあったのを覚えている。 今でも配列――今ではたいてい「リスト」という格好いい名前がついている――を使うときには、「これこそプログラミングの味!」とでも言うべき不自然さを感じて、抵抗を覚える。 たとえばループ変数の名前、i。なぜいつも同じ名前、つまり意味のない名前なのか。よい名前がつけられないということは、なにかがうまくいっていないということだ。 この点で、関数オブジェクトとmapは文句なく正しい。が、それで配列まで正しくなるのか。 配列とは値の集合であり、少なくとも以下の3つの性質がある。 1. 重複を許す(多重集合) 2. 要素間には前後の順序がある(全順序) 3. 配列の各要素は連続した整数と1対1対応する(インデ