プログラミングにおけるベクトル、セット、タプルの違いは何ですか?
vector
は、重複を許可するアイテムの順序付けられたシーケンスです。
set
は、順序付けされておらず、重複を許可しないアイテムのコレクションです。
Tuple
は、指定された長さのアイテムの順序付けられたシーケンスです。
タプルはオブジェクトの異種コレクションであり、単一のユニットとして扱う必要があります。たとえば、( "John"、 "Smith"、30)は(String、String、Integer)タプルです。
リスト(C++:およびベクトル)は、オブジェクトの同種のコレクションです。つまり、各オブジェクトを均一に扱うことができます。それらが実際に同じタイプであるかどうかは言語によって異なりますが、ポイントはそれらが同じ方法で処理できるということです。
セットは、順序付けされていない一意の同種のコレクションです。セットに含まれるオブジェクトとそのタイプはわかっていますが、順序はわかりません。また、各オブジェクトが1つだけ含まれています。
数学的に
タプルには、セットと区別するプロパティがあります。
- タプルには同じ要素の複数のインスタンスが含まれる可能性があるため、タプル(1,2,2,3)!=(1,2,3)ですが、{1,2,2,3} = {1,2,3}に設定します。 。
- タプル要素の順序は次のとおりです。タプル(1,2,3)!=(3,2,1)ですが、{1,2,3} = {3,2,1}に設定します。
- タプルには有限数の要素がありますが、セットまたはマルチセットには無限の数の要素があります。
ベクトルは、複数のタプルで表される別のタイプです。
乾杯:-)
ベクトルには順序があります
タプルは順序付けられており、繰り返し要素を持つことができます。
セットは順序付けられておらず、繰り返し要素はセットを変更しません。
例:{a、b}、{b、a}、および{b、b、a}はすべて同じセットですが、(a、b)、(b、a)、および(b、b、a)はすべて同じセットです。すべての異なるタプル。
違いはタプルはコレクションとして扱われることを意図していませんが、ベクトルとセットはコレクションとして扱われます。
タプルは複合値を表すことを意味します。(x、y、z)座標を持つ3D空間の位置のように、コレクションとして見るのは意味がありません、yesは3つの数字のリストですが、3つの数字は異なる意味を持ち、組み合わされて特定の意味を形成するためです。
tuplesは、さまざまなタイプを持つことができる名前のない位置属性を持つ構造体と考えてください。そのため、多くの値を格納することを意図していません。これが、このようなもののすべての実装が少数の値に対して最適化されている理由です。
Tupleの例は、SQLデータベースの単一行の列を記述するために使用されるタイプです。実際、関係代数で行が呼び出されるのは誰ですか。
Vector(ちなみにひどい名前)は、O(1)のアクセスを維持しながら、必要に応じて拡張するために通常実装される多くの値を格納することを目的とした順序付けられたコレクションです。
主キーのないSQLDBのテーブルは、タプルのベクトルになります。
Setは一意の要素のコレクションであり、順序付けは可能ですが、順序付けする必要はありません。
主キーを持つSQLDBのテーブルは、タプルのセットになります。
ベクトルには順序があり、セットにはありません(そして、重複することはできません)。タプルはベクトルに近いですが、通常、実際には構造体のように使用されます。