gpt4 book ai didi

c++ - C++中信息树的设计问题

转载 作者:行者123 更新时间:2023-11-30 03:09:52 26 4
gpt4 key购买 nike

提前为冗长的解释道歉!

我有一个 C++ 应用程序,它使用 hash_map 来存储从文本文件解析的信息树。映射中的值是子 hash_mapstring。这些值是从文本文件中解析出来的,然后存储到 map 中。

我想避免必须将字符串和映射作为拷贝发送到 HashMap 分配函数,因此在解析文件时,我创建了一个指向 new string()new hash_map() 并将值作为“任意”数据(指向 void 的指针)存储到映射中。

但是,这在清理时会带来一个很大的问题,因为删除 void 的行为并不像人们希望的那样(这是有道理的)。我通过创建一个 Object 类并创建名为 StringObjHashMap 的子类来寻找一个简单的解决方案,它们存储各自的数据,并且由于 hash_map 值类型更改为指向 Object 的指针,因此调用了适当的析构函数。

有没有更简单的方法来解决这个问题?我研究了动态转换并认为它可能工作得很好,因为我可以从失败的转换中捕获异常,并适本地对待它,但我不禁觉得可能有一个更简单的解决方案,或者我已经结束了-有点复杂。

建议?

提前致谢,詹格勒

最佳答案

使用 boost::variant(相当于用户定义类型的 C++ union )、C++ union (适用于这种情况,因为您只使用指针)或 boost::any(可以存储任何类型) 来存储指向 hash_map 或字符串的指针。

关于c++ - C++中信息树的设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3706154/

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