我的問題是,我應該如何將對象與對方聯繫起來。使用唯一的成員標識符標識對象是個好主意嗎?
我有兩個載體,vector<Baby> babies
和vector<Toy> toys
。每個嬰兒和每個玩具都有一個獨特的成員int id
。因此,所有嬰兒和玩具的編號從0到n。
現在,每個寶貝都有一個喜歡的玩具,每個玩具都有一個喜歡的寶貝。到目前爲止,我使用指針:寶寶有一個指向他喜歡的玩具的指針,這個玩具有一個指向寶寶的指針。 (沒關係,因爲我永遠不會改變向量) 然而,嬰兒和玩具之間的區別是它們的身份,而不是它們在向量中的位置。
當我相處時,我質疑我的設計,發現指針可以工作,但它們可能會導致未來出現問題。相反,如果我使用ID,我會很好,但我需要訪問整個嬰兒或玩具載體。
在這種情況下是否有普遍的做法?使用指針是好主意嗎?我應該用智能的方式編寫我自己的使用ID的容器嗎?
編輯: 我喜歡補充,我已經考慮了一個地圖來關聯嬰兒和玩具。不過,我在運行時確定了寶寶與玩具的關係(以及其他方式)。找到這種關係是該計劃的主要部分。因此我不確定我是否可以使用地圖。但是,我會看看它(直到現在還沒有使用它)。更重要的是,關於首選玩具和寶寶的信息必須是客體的一部分,而不是(僅)高級數據結構的信息。
你有沒有想過使用'std :: map'?你可以將向量中嬰兒的位置用作'key'和相應玩具在其向量中的位置作爲'value',特別是如果你不改變向量。或者,如果您不想要職位,您可以使用這些ID作爲鍵和值 –
Varius
如果您還沒有聽說過「字符串型界面」,我鼓勵您查看它。不要爲每個ID使用'int',而應該使'BabyId'和'ToyId'是不同的類型;你不想無意間回收寶寶,是嗎? –
指針可以。儘量不要使用ID - 或者只是作爲一個簡單的屬性,如名稱等等。指針始終是唯一的,ID可能會被錯誤地複製。 – PiotrNycz