数据结构中的异构数组


众所周知,数组根据定义是同构的。因此,我们必须将相同类型的数据放入数组中。但是,如果我们想要存储不同类型的数据,那么有什么技巧呢?在像C语言这样的旧语言中,我们可以使用联合体来人工地将不同类型合并成一种类型。然后,我们可以在此新类型上定义一个数组。这里,数组元素实际包含的对象类型由一个标记决定。让我们来看一个这样的结构:

struct Vehicle{
   int id;
   union {
      Bus b;
      Bike c;
      Car d;
   }
};

然后,程序员必须建立一个关于如何使用id标记的约定。例如,假设当id为0时,表示表示的车辆实际上是一辆公共汽车等。联合体为公共汽车、自行车和汽车中最大的类型分配内存。如果对象的大小差异很大,这会浪费内存。

在面向对象的语言中,我们可以使用继承的概念。假设我们有一个名为Vehicle的类,所有其他类型如Bus、Bike和Car都是它的子类。因此,如果我们为Vehicle定义一个数组,那么它也可以容纳所有它的子类。这将帮助我们在一 个数组中存储多种类型的数据。

更新于:2020年8月10日

1K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告