プログラマーが「データ構造」について話すとき、彼らは リスト 、 ツリー のように 抽象データタイプ についてのみ話しているのですか ハッシュ =、 グラフ など?
または、その用語には 複合型 (クラスオブジェクト、構造体、列挙型など)や プリミティブ型 (ブール、整数、文字、等。)?
プログラマーが複雑なデータ構造または抽象データ型を参照するためにこの用語を使用することを聞いたことがあるだけですが、 データ構造のリストを提供するウィキペディアの記事 には、定義に複合型とプリミティブ型の両方が含まれます。 (それは理にかなっていますが)私が期待したものではありません。
オンラインで見回すと、プログラミングの意味で「データ構造」という用語を参照している他の場所が、抽象データ型だけを参照していると見なします。たとえば、 ストーニーブルック大学のコンピュータサイエンス学部からのこの講義
データ構造は、特定の抽象データ型の実際の実装です。
または このデータ構造に関するウィキブック 、これは次のような文で用語を使用します:
データ構造は上位レベルの抽象化であるため、リストへのアイテムの追加や、キュー内で最も優先度の高いアイテムの検索など、データのグループに対する操作を提示します
それでは、プログラマが「データ構造」という用語を使用しているときに、プログラマが複雑なデータ構造や抽象データ型を参照しているのを聞くだけなのはなぜですか。プログラマーは、辞書の定義とは異なる用語の定義を持っていますか?
「データ構造」の一般的な定義は、構造化された方法でデータを保持できるものであれば何でもかまいません。そのため、抽象データ型に加えて、複合型やプリミティブ型も含まれます。たとえば、string
は構造化された方法で文字のシーケンスを保持できるため、データ構造です。
ただし、この用語には、プログラマにとって別の意味もあります。
「データ構造」という用語は非常に広いため、開発者は通常、class
またはdata object
またはprimitive type
などの特定の用語を使用して、自分が話していることを識別します。最も複雑または抽象的なデータ型に使用される用語は「データ構造」です
これが、プリミティブデータ型などではなく、配列、リスト、ツリー、ハッシュテーブルなどの抽象データ型に最も頻繁に使用される「データ構造」を聞く理由です。
この用語は両方を指しますが、ints
やbooleans
などは通常、プリミティブデータ型(またはプリミティブデータ構造)と見なされます。用語自体は、単に特定の方法でデータを格納するすべてのものを指します。確かにint
は、ハッシュテーブルのようなものだけでなく、この定義にも適合しますが、それだけ単純です。
通常、人々がデータ構造を使用するとき、彼らはより複雑なデータ構造を参照し、より単純なものではなく両方が定義を満たします。
私がデータ構造について聞いた最も単純で非常に基本的な定義は、挿入、更新、削除などの基本的な操作を時間とメモリの観点から効率的に実行できるような方法でメモリにデータを格納することです。
したがって、データ型は、格納されているデータの型を示します。整数、小数、文字、文字列、またはオブジェクトを指定できます。これは、抽象データ型に加えて、複合型またはプリミティブ型にすることができます。
ただし、メモリに複雑なデータを格納する場合は、データ構造を使用します。これが、配列、リスト、ツリー、ハッシュテーブルなどのデータ型についてのみ聞く理由であり、プリミティブデータ型などについては聞きません。