处理实例“数据库”的模式

时间:2011-12-28 17:29:37

标签: c++ oop design-patterns

对于我的应用程序我从hardrive加载一个不同的“项目”列表:这些“项目”是普通的数据结构,代表我程序中所有“项目”的最终列表。 到目前为止,我所做的是,我只是将所有反序列化的实例放入一个大的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)

}

}

1 个答案:

答案 0 :(得分:2)

如果你传递指针,std::vector是一个坏主意,因为当需要重新分配向量时指针会改变。请考虑使用boost::ptr_vector和动态分配。

除了这个次要的考虑之外,简单的向量是最简单的存储,并且当迭代是唯一的问题时,它与任何其他存储一样好。我建议你坚持下去,直到有其他需要出现。