プログラマが「データ構造」について話すとき、彼らは何を指しているのでしょうか?


18

プログラマは、「データ構造」について語るとき、彼らは話している抽象データ型のようなリストハッシュグラフなど、?

または、その用語には、複合型(クラスオブジェクト、構造体、列挙型など)やプリミティブ型(ブール、int、charなど)などのデータを保持する構造が含まれますか?

プログラマーがこの用語を使用して複雑なデータ構造または抽象データ型を参照するのを聞いたことがありますが、データ構造のリストを提供するウィキペディアの記事には、定義に複合型とプリミティブ型の両方が含まれていますが、これは期待したものではありません理にかなっていますが)。

オンラインの周りを見たとき、私は唯一のような抽象データ型を参照するようプログラミングの意味での用語「データ構造」を参照して他の場所を参照コンピュータサイエンスのストーニーブルック大学の学部からこの講義いる状態を

データ構造は、特定の抽象データ型の実際の実装です。

またはデータ構造に関するこのウィキブックでは、次のような文の用語を使用しています。

データ構造は高レベルの抽象化であるため、リストへのアイテムの追加、キュー内で最も優先度の高いアイテムの検索など、データのグループに対する操作を提示します

それでは、プログラマが「データ構造」という用語を使用するときに、複雑なデータ構造または抽象データ型を参照するのを聞くのはなぜですか?プログラマーは、辞書の定義とは異なる用語の定義を持っていますか?


1
この用語は時間とともに進化しました。CSは、通常、関連データの複数の項目を保持できる構造の一般的なタイプ(リンクリスト、木など)のための長期使用群衆
オデッド

1
それは単なる専門用語ではありませんか?文字列は実際には文字の配列であり、個々の文字のシーケンスを表すデータ構造です
ミシール

3
「データ構造」は自己定義の用語ではありませんか?データを格納するための構造です!質問を真剣に受け止めるのは少し難しいです。
マイケルK

1
@Rachel質問は、実際にはプリミティブデータ型がデータ構造かどうかです。if programmers mean something different when they talk about data structuresしかし、まだ意見を求めています。
ヤニス

2
「プリミティブ」はスコープに完全に依存します。たとえば、バイナリレベルでは、intなどはありません。さらに低いレベルでは、偶数ビットではなく、電気バイアスのみです。繰り返しますが、これは自己定義的な用語であり、良い質問ではありません。
マイケルK

回答:


20

「データ構造」の一般的な定義は、構造化された方法でデータを保持できるものです。したがって、これには、抽象データ型に加えて複合型とプリミティブ型が含まれます。たとえば、a stringは構造化された方法で文字のシーケンスを保持できるため、データ構造です。

ただし、この用語はプログラマにとっても別の意味を持ちます。

「データ構造」という用語は広範であるため、開発者は通常、classor data objectprimitive typeなどの具体的な用語を使用して、話している内容を識別します。ほとんどの複雑または抽象データ型に使用される特定の用語は「データ構造」

これが、配列、リスト、ツリー、ハッシュテーブルなどの抽象データ型で最も頻繁に使用される「データ構造」を聞く理由であり、プリミティブデータ型のようなものではありません。


4
グラフも非常に一般的だと思いますが、一般的で効率的な方法で構築するのは非常に難しいため、標準ライブラリではほとんど表示されません。
クライム

プログラマが「データ構造」について話すとき、彼らは通常、抽象的なデータ型について話しているのでしょうか?また、プリミティブ型(int、bool、charなど)および複合型(class、struct、enumなど)は、プログラマーによってデータ構造と見なされますが、通常は異なる用語で参照されますか?
レイチェル

1
@Rachel技術的には、データ構造は、ポインター/クラスなどを使用した自作の実装である可能性もあります。C ++の宿題の一部として、リストに似た非常にい「データ構造」を作成しました。クラスのデータ構造は、通常、より具体的なものであるため、それほど頻繁に呼び出しません。
ベンブロッカ

@BenBrocka Ahhhしたがって、「データ構造」はこれらの他のオブジェクトをカバーする非常に広範な用語ですが、データ構造について話すときはより具体的で、「プリミティブデータタイプ」や「データオブジェクト」 "データ構造"。などのオブジェクトのために一般的に使用される特定の用語ListsTreesGraphsなどは、単に「データ構造」であることを起こる
レイチェル

1
@Rachelはい、すべてがデータ構造(厳密に言えば)であっても、「データ構造」という用語は通常、これらの抽象的なデータ型を指します。開発者の観点から言う「データ構造」という用語は、彼がデータをどのように保存するかを指していると思います。これは、メモリ内リスト、ディスク内のファイル、または彼が自分で実装したカスタムデータ構造である可能性があります。
アレックス

5

以下のようなものものの用語は、両方を意味intsしては、booleans一般的にプリミティブデータ型(またはプリミティブデータ構造)と考えられています。用語自体は、特定の方法でデータを保存するものを単に指します。確かにint、ハッシュテーブルのようなものと同様にこの定義を満たしますが、それはより単純です。

通常、データ構造を使用する場合、単純な構造ではなく、より複雑なデータ構造を参照しますが、両方とも定義を満たします。


2
誰かintが「データ構造」と呼ぶのを聞いたことはないと思います。
Qwertie

2
@Qwertie私もどちらでもないが、それはまだそれです。「データ型」と呼ばれることもありますが、それは「データ構造」とほぼ同じことを意味します
-Oleksi

0

私が今まで聞いたデータ構造の最も単純で非常に基本的な定義は、挿入、更新、削除などの基本的な操作を時間とメモリの観点から効率的な方法で実行できるようにメモリにデータを保存することです。

したがって、データ型は、そこに格納したデータの型を示します。整数、10進数、文字、文字列、またはオブジェクトを指定できます。これは、抽象データ型に加えて、複合型またはプリミティブ型にすることができます。

ただし、複雑なデータをメモリに保存する場合は、データ構造を使用します。これが、プリミティブデータ型などではなく、配列、リスト、ツリー、ハッシュテーブルなどのデータ型についてのみ耳にする理由です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.