2011-12-28 18 views
2

我的應用程序我從hardrive載入不同「項目」的列表:這些「項目」是純數據結構並代表所有「項目」的權威列表,在我的程序中。 到目前爲止,我所做的只是將所有反序列化的實例放入一個大的std :: vector中,並通過指針指向我的程序的其餘部分。我不應該在任何其他地方有任何「item」對象,而不是在作爲數據庫的std :: vector中。 這種情況下是否有良好或特定的設計模式?我覺得遲早我會有物品對象比我的標準::向量其他地方,或者我使用的方法太簡單,不健壯 謝謝用於處理實例的「數據庫」的模式

編輯:爲了澄清的緣故,我正在做一些事情像這樣的(從內存中):

struct Item { 
    std::string name; 
    int property; //etc 
} 

class Items { 

static std::vector<Item> _list; 

static void init() { 

    Item new_item = readfromfile(...); 
    _list.push_back(new_item) 

} 

} 
+0

根據你的編輯,你最接近的設計模式可能是單身? – AJG85 2011-12-28 17:46:39

回答

2

如果您周圍傳遞指針,一個std::vector是一個壞主意,因爲當向量需要被重新分配,指針會發生變化。考慮使用boost::ptr_vector和動態分配。

除了這個小問題之外,簡單的向量是最簡單的存儲方式,並且在迭代是唯一的問題時與其他方式一樣好。我建議你留下來,直到出現其他需求。

+0

雖然 – lezebulon 2011-12-28 17:38:52

+0

@lezebulon:我不會在初始化後重新分配我的矢量所以你永遠不會添加,移除或移動這個矢量中的物品? – AJG85 2011-12-28 17:42:52

+0

我在init()調用中添加項目,我推送從文件中讀取的元素。然後...就是這樣,我不會在運行時添加/刪除任何項目 – lezebulon 2011-12-28 17:44:58