2011-12-28 9 views
2

私のアプリケーションでは、hardriveからさまざまな "items"のリストをロードしています。これらの "items"は単純旧データ構造であり、すべての "items"私のプログラムで。 これまでのところ、デシリアライズされたすべてのインスタンスを1つの大きなstd :: vectorに入れ、残りのプログラムでポインタで参照するだけです。私は、データベースとして機能する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

答えて

2

std::vectorは悪い考えです。 boost::ptr_vectorと動的割り当てを使用することを検討してください。

この小さな考慮事項とは別に、単純なベクトルは可能な限り単純な記憶であり、反復が唯一の懸案事項である場合には他のものと同じくらい良好です。私はあなたに、他の必要が生じるまでそれをとどめるようアドバイスします。

+0

私は初期化後にベクトルを再割り当てしませんが、 – lezebulon

+0

@lezebulon:このベクトルのアイテムを追加、削除、移動することはありませんか? – AJG85

+0

私はファイルから読み込んだ要素をプッシュするinit()呼び出しの間に項目を追加しています。それで...それで、実行時にアイテムを追加/削除しないでください – lezebulon