对于我的应用程序我从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)
}
}
答案 0 :(得分:2)
如果你传递指针,std::vector
是一个坏主意,因为当需要重新分配向量时指针会改变。请考虑使用boost::ptr_vector
和动态分配。
除了这个次要的考虑之外,简单的向量是最简单的存储,并且当迭代是唯一的问题时,它与任何其他存储一样好。我建议你坚持下去,直到有其他需要出现。