資料結構中的異構陣列


眾所周知,陣列根據定義是同構的。因此,我們必須將相同型別的資料放入陣列中。但是,如果我們想要儲存不同型別的資料,那麼有什麼技巧呢?在像C語言這樣的舊語言中,我們可以使用聯合體來人工地將不同型別合併成一種型別。然後,我們可以在此新型別上定義一個數組。這裡,陣列元素實際包含的物件型別由一個標記決定。讓我們來看一個這樣的結構:

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

然後,程式設計師必須建立一個關於如何使用id標記的約定。例如,假設當id為0時,表示表示的車輛實際上是一輛公共汽車等。聯合體為公共汽車、腳踏車和汽車中最大的型別分配記憶體。如果物件的大小差異很大,這會浪費記憶體。

在面向物件的語言中,我們可以使用繼承的概念。假設我們有一個名為Vehicle的類,所有其他型別如Bus、Bike和Car都是它的子類。因此,如果我們為Vehicle定義一個數組,那麼它也可以容納所有它的子類。這將幫助我們在一 個數組中儲存多種型別的資料。

更新於:2020年8月10日

1K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.