【发布时间】:2010-11-01 15:45:20
【问题描述】:
向量、集合、元组在编程中有什么区别?
【问题讨论】:
-
你有你的答案,但作为补充一点,在数学中,集合也可以是无限的,例如集合
{1,2,3,...}或实数集合。
标签: language-agnostic vector tuples set
向量、集合、元组在编程中有什么区别?
【问题讨论】:
{1,2,3,...} 或实数集合。
标签: language-agnostic vector tuples set
【讨论】:
vector 是允许重复项的有序序列。
set 是无序且不允许重复的项的集合。
tuple 是给定长度的有序项目序列。
【讨论】:
数学
元组具有将其与集合区分开来的属性。
- 元组可能包含同一元素的多个实例,因此元组 (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}。
- 元组具有有限数量的元素,而集合或多重集可能具有无限数量的元素。
Vector 是由多个元组表示的不同类型。
干杯:-)
【讨论】:
元组是对象的异构集合,应将其视为一个单元:例如,("John", "Smith", 30) 是一个 (String, String, Integer) 元组。
列表(在 C++ 中:以及向量)是对象的同质集合——也就是说,每个对象都可以被统一对待。它们是否实际上是同一类型取决于语言,但关键是它们可以以相同的方式处理。
一个集合是一个无序的唯一同质集合——你知道它包含什么对象,它们是什么类型,但不知道顺序是什么,它只包含每个对象中的一个。
【讨论】:
向量有顺序
元组是有序的,可以有重复元素。
集合是无序的,重复元素不会改变集合。
例如:{a,b}、{b,a} 和 {b,b,a} 都是同一个集合,而 (a,b)、(b,a) 和 (b,b, a) 都是不同的元组。
【讨论】:
不同之处在于元组并不意味着被视为集合,而向量和集合是。
元组是用来表示复合值的,比如在3d空间中的位置(x,y,z),看它是没有意义的作为 一个集合,因为 yes 是 3 个数字的列表,但 3 个数字 有不同的含义,组合起来形成一个特定的含义。
将 元组 视为具有无名位置属性的结构 可以有不同的类型。因此并不意味着存储大量 值,这就是为什么这些东西的所有实现都是 针对少数人进行了优化
tuple 的一个例子是用于描述列的类型 SQL 数据库中的单行,实际上这就是调用的行 关系代数。
Vector(顺便说一下,这个名字很糟糕,因为数学中的这个词用于复合值而不是集合)是一个有序集合,它 旨在存储大量值,它通常实现为增长 需要保持 O(1) 的访问权限
SQL DB 中没有主键的表是元组向量。
Set 是唯一元素的集合,可以排序但不一定非要排序。
具有主键的 SQL 数据库中的表将是一组元组。
【讨论】:
tuples
向量有顺序,集合没有(也不能有重复),元组与向量很接近,但在实践中通常更像结构。
【讨论】: