gpt4 book ai didi

c++ - 处理 "database"个实例的模式

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:56:44 24 4
gpt4 key购买 nike

对于我的应用程序,我从硬盘加载不同“项目”的列表:这些“项目”是普通的旧数据结构,代表我程序中所有“项目”的最终列表。到目前为止,我所做的只是将所有反序列化的实例放入一个大的 std::vector 中,并在我的程序的其余部分中通过指针引用它们。除了在充当数据库的 std::vector 中,我不应该在其他任何地方拥有任何“项目”对象。这种情况是否有好的或特定的设计模式?我觉得迟早我会在我的 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)

}

}

最佳答案

如果要传递指针,std::vector 不是个好主意,因为当需要重新分配 vector 时,指针会发生变化。考虑使用 boost::ptr_vector 和动态分配。

除了这个次要的考虑因素之外,简单的 vector 是最简单的存储可能,并且在迭代是唯一考虑的情况下与任何其他存储一样好。我建议您坚持使用它,直到出现其他需求。

关于c++ - 处理 "database"个实例的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8659172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com