データ構造
From Wikipedia, the free encyclopedia
ソフトウェア開発において、データ構造についてどのような設計を行うかは、プログラム(アルゴリズム)の効率に大きく影響する。そのため、さまざまなデータ構造が考え出されている。多くのプログラムの設計において、データ構造の選択は主要な問題である。これは大規模システムの構築において、実装の困難さや質、最終的な性能は最良のデータ構造を選択したかどうかに大きく依存してきたという経験の結果である。
多くの場合、データ構造が決まれば、利用するアルゴリズムは比較的自明に決まる。しかし場合によっては、順番が逆になる。つまり、与えられた仕事をこなす最適なアルゴリズムを使うために、そのアルゴリズムが前提としている特定のデータ構造が選択される。いずれにしても適切なデータ構造の選択は極めて重要である。この洞察は、多くの定式化された設計手法やプログラミング言語において、データ構造がアルゴリズムよりも重要な構成要素とされていることにも現れている。現代的なプログラミング言語は異なるアプリケーションにおいてデータ構造の安全な再利用を可能とするように、実装の詳細をインターフェースの背後に隠蔽するための、モジュール化のしくみを備えている。C++やJavaなどのオブジェクト指向プログラミング言語はクラスをこの目的のために用いている。
データ構造は専門的な、あるいは非専門的な(すなわち、あらゆる)プログラミングにとって非常に重要なので、C++におけるSTLや、Java API、および.NET Frameworkのようなプログラミング言語の標準ライブラリや環境において多くのデータ構造が利用可能となっている。データ構造が実装を表すのかそれともインターフェースを表すのかについての議論は多少ある。どのように見えるのかは相対的な問題であるのかもしれない。データ構造は関数同士の間のインターフェイスとして見ることもできるし、データ型に基づいて構成されたストレージにアクセスする方法を実装したものとして見ることもできる。

