向量,集合和元组之间的差异

RCI*_*CIX 32 language-agnostic tuples vector set

编程中的向量,集合和元组之间有什么区别?

Ric*_*dle 73

  • 矢量:相同类型的对象的有序集合.
  • 设置:无序的对象集合,可能具有相同类型或可能不同,具体取决于集合类型和语言.任何给定的对象只能出现一次.
  • 元组:有序收集不同类型的对象.

  • 我认为,由于这些术语跨越了CS的证据填充数学方面,因此定义不一定是你的同事使用这个词的定义. (2认同)
  • 我不同意Brabster的断言,即Java不会限制向量​​上的类型.std :: vector也不会从那种思维中约束类型,因为你总是可以得到一个无约束指针的向量.在Java中,Vector包含对象类型.它不是不受约束的. (2认同)

bra*_*ter 20

A vector是一个有序的项目序列,允许重复.

A set是无序的项目集合,不允许重复.

A tuple是给定长度的有序项目序列.


dhe*_*ran 8

数学上

元组具有将其与集合区分开的属性。

  • 元组可能包含同一元素的多个实例,因此元组 (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}。
  • 元组具有有限数量的元素,而集合或多重集可能具有无限数量的元素。

向量是由多个元组表示的不同类型。

干杯:-)


Joh*_*kin 5

元组是异构的对象集合,应将其视为单个单元:例如,("John","Smith",30)是(String,String,Integer)元组.

列表(在C++中:也是向量)是一个同类的对象集合 - 也就是说,每个对象都可以统一处理.它们实际上是否是同一类型取决于语言,但关键是它们可以以相同的方式处理.

集合是一个无序的唯一同源集合 - 您知道它包含哪些对象,它们是什么类型,但不是以什么顺序,它只包含每个对象中的一个.

  • list和vector是C++中的不同概念.虽然它们都代表有序的同类集合,但是列表意味着O(1)插入和向量意味着O(1)搜索,即列表被实现为某种链表结构,并且向量被实现为数组. (3认同)