3.7.1 异质数据结构
异质数据结构是指在数据结构中包含不同类型的数据元素。这种数据结构利用类的多态性,使得数据单元可以由不同类的对象组成。例如,一个堆栈可以压入不同类型(如长度不同)的对象。
异质数据结构的实现方式
- 结构(struct):通过struct声明创建一个数据类型,可以将不同类型的对象聚合到一个对象中。编译器维护关于每个结构类型的信息,指示每个字段的字节偏移。结构可以嵌套结构,就像数组可以嵌套在结构中。
- 联合(union):用不同的字段来引用相同的内存块,以多种类型来引用同一个对象。例如,一个节点可以是一个内部节点或一个叶子节点,具体取决于其类型。
异质数据结构的应用场景
异质数据结构在面向对象的数据库和多媒体数据库中非常重要,因为它们能够存储和处理不同类型的数据。例如,一个数据库中的记录可能包含文本、图像、音频等多种数据类型,这些都可以通过异质数据结构来组织和存储。
异质数据结构与其他数据结构的区别
异质数据结构与其他数据结构的主要区别在于其能够包含不同类型的数据元素。相比之下,传统的单一类型数据结构(如堆栈、队列、链表等)只能存储相同类型的数据。异质数据结构通过类的多态性实现了这种灵活性,使得数据结构能够适应更广泛的应用场景。
3.7.2 结构与联合区别
1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。
2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。