【问题标题】:Differences between vector, set, and tuple向量、集合和元组之间的区别
【发布时间】:2010-11-01 15:45:20
【问题描述】:

向量、集合、元组在编程中有什么区别?

【问题讨论】:

  • 你有你的答案,但作为补充一点,在数学中,集合也可以是无限的,例如集合{1,2,3,...} 或实数集合。

标签: language-agnostic vector tuples set


【解决方案1】:
  • 向量:相同类型对象的有序集合。
  • Set:对象的无序集合,可能是相同类型,也可能不同,具体取决于集合类型和语言。任何给定对象只能出现一次。
  • 元组:不同类型对象的有序集合。

【讨论】:

  • 在此之前我还没有看到向量的定义仅限于单一类型...有兴趣,您能指点我的资源吗?
  • @Brabster:C++ 中的 std::vector 就是一个例子。
  • 哦,我明白了,谢谢。可能某些语言确实限制了其 Vector 实现的类型,而其他语言则没有(例如 Java,可以在其 Vector 实现中采用任何 Object)。我以前没有注意到这一点。
  • 我认为,由于这些术语越界进入 CS 的证明填充数学方面,定义不一定是你的同事使用这个词的意思。
  • 我不同意 Brabster 的断言,即 Java 不限制向量上的类型。 std::vector 也不会从这种想法中限制类型,因为您总是可以拥有一个不受约束的指针向量。在 Java 中,向量包含对象类型。它不是不受约束的。
【解决方案2】:

vector 是允许重复项的有序序列。

set 是无序且不允许重复的项的集合。

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

【讨论】:

    【解决方案3】:

    数学

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

    • 元组可能包含同一元素的多个实例,因此元组 (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 是由多个元组表示的不同类型。

    干杯:-)

    【讨论】:

      【解决方案4】:

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

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

      一个集合是一个无序的唯一同质集合——你知道它包含什么对象,它们是什么类型,但不知道顺序是什么,它只包含每个对象中的一个。

      【讨论】:

      • double 将是 2 元素元组(2 元组),尽管该术语(通常)在计算机上下文中具有不同的含义。
      • 列表和向量在 C++ 中是不同的概念。虽然它们都表示有序的同构集合,但 list 意味着 O(1) 次插入,而 vector 意味着 O(1) 次查找,即 list 实现为某种链表结构,vector 实现为数组。
      • 令牌:感谢列表/向量的二元性,我已经澄清,在 C++ 中,向量是一种附加类型。
      【解决方案5】:

      向量有顺序

      元组是有序的,可以有重复元素。

      集合是无序的,重复元素不会改变集合。

      例如:{a,b}、{b,a} 和 {b,b,a} 都是同一个集合,而 (a,b)、(b,a) 和 (b,b, a) 都是不同的元组。

      【讨论】:

        【解决方案6】:

        不同之处在于元组并不意味着被视为集合,而向量和集合是。

        • 元组是用来表示复合值的,比如在3d空间中的位置(x,y,z),看它是没有意义的作为 一个集合,因为 yes 是 3 个数字的列表,但 3 个数字 有不同的含义,组合起来形成一个特定的含义。

          元组 视为具有无名位置属性的结构 可以有不同的类型。因此并不意味着存储大量 值,这就是为什么这些东西的所有实现都是 针对少数人进行了优化

          tuple 的一个例子是用于描述列的类型 SQL 数据库中的单行,实际上这就是调用的行 关系代数。

        • Vector(顺便说一下,这个名字很糟糕,因为数学中的这个词用于复合值而不是集合)是一个有序集合,它 旨在存储大量值,它通常实现为增长 需要保持 O(1) 的访问权限

          SQL DB 中没有主键的表是元组向量。

        • Set 是唯一元素的集合,可以排序但不一定非要排序。

          具有主键的 SQL 数据库中的表将是一组元组。

        【讨论】:

        • 很好地澄清了tuples
        【解决方案7】:

        向量有顺序,集合没有(也不能有重复),元组与向量很接近,但在实践中通常更像结构。

        【讨论】:

          猜你喜欢
          • 2017-05-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-23
          • 1970-01-01
          • 2014-01-28
          相关资源
          最近更新 更多