元组 vs 记录

31

tuples和records有什么区别?


@BoltClock:实际上我是在一般情况下询问,但让我们假设在Pascal或C的上下文中。 - rookie
1
术语取决于上下文:您需要给我们更多信息。 C语言本身没有元组或记录的概念,因此这取决于使用术语的库或其他任何内容。 - Fred Nurk
3个回答

20

这两种都是产品类型,可以让你从多个更简单的类型构建类型。一些语言将元组视为记录的一种形式。

定义

元组是一个有序的元素组,比如 (10, 25)。

记录通常是一组带名称的元素,例如 { "x": 10, "y": 25 },其中值有两个标记为 xy 的字段,而 x 字段的值为 10

词源

“tuple”一词来自于“quintuple”、“sextuple”、“septuple”和“octuple”这些词上常见的“-tuple”后缀,它们分别表示5、6、7和8个元素的组合。

“record”一词来自于数据表。您可以将具有 xy 字段的所有可能的元组视为一张表,其中列对应于字段,行收集特定记录实例的所有字段。

 value address     field x    field y
 0xABCD            10         25
 0x1234            42         "xyz"

产品类型的等价性

您可以将元组视为一种记录,其中元组中的索引是等效记录中元素的名称,因此(10,25){"0":10,"1":25}。 我相信Standard ML和相关语言使用记录作为类型合取的基本单位(代数数据类型提供了类型拆卸),并以这种方式将元组视为一种记录。


6

根据维基百科:

在计算机科学中,记录(也称为元组或结构)是最简单的数据结构之一,由两个或多个值或变量存储在连续的内存位置中;以便每个组件(称为记录的字段或成员)可以通过将不同的偏移量应用于起始地址来访问。

我认为元组和记录之间几乎没有区别。


1
维基百科在一般情况下可能不正确。实现记录和元组概念的语言似乎总是使用Mike Samuel描述的语义。 - Spacen Jasset
连续的内存位置,使用偏移量... 嗯,为什么我感觉我在读有关数组的内容? - Saurabh Patil

1
记录是一张表中完整的数据元素行,比如说一个学生在一张表中有一个记录,在第三个滚动编号下。而元组是记录的超集,其中的数据也属于其他表,例如学生在其他表中的出勤、成绩、联系方式、费用等方面的记录。因此,来自所有表格的一个学生的整个数据集就是元组。据我所知,就是这样。谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接