gpt4 book ai didi

c++ - 如何实现一对多关系,同时允许以任何一种方式进行有效搜索?

转载 作者:行者123 更新时间:2023-11-28 02:23:01 26 4
gpt4 key购买 nike

我认为这个问题在我遇到的上下文中得到了最好的解释。如果您不同意,请跳至下一条水平规则。

我正在开发一个虚拟棋盘游戏,以此来改进我的 C++。现在我遇到了一个问题。

游戏中有几个方 block (您可以在其中的“空间”),每个方 block 中都可以有几个怪物。由于我所针对的特征,有必要知道每个瓦片中有哪些怪物以及每个怪物在哪个瓦片中。

这让我想知道:我应该在 tile 类中引入一个数组来保存指向该 tile 中所有怪物的指针,还是在每个怪物中引入一个指向它们当前所在 tile 的指针更好?还是同时进行?


或者,更抽象地说:

“A”类型的对象可以与零个或多个“B”类型的对象相关。 “B”类型的对象只能与一个“A”类型的对象相关。鉴于必须以任何一种方式进行有效搜索(找出特定“A”对象与哪些“B”对象相关,反之,特定“B”对象与哪个“A”对象相关),什么是最好的实现此行为的方法?

如果有任何不清楚的地方,请问我,以便我提供进一步的解释。

最佳答案

在这里AB指的是对象的名称——可以是指针、智能指针、表中的 guid 或其他任何名称。

您从 A 创建 map 至 B s(零个或多个 B s),以及每个 B 中的条目指定 A . map 来自AB s 可以是一个简单的 vector<B>在由 A 命名的事物的实例中s,例如,或者由A命名的事物所在空间的空间划分树s 在,或者一个无序的 multimap ,或者其他什么。

确定生命周期管理的方向。确定您的名称中是否需要类似弱指针的行为,或类似哑指针的行为。第二种需要在生命周期结束时手动清理:另一种将工作推迟到使用点。

关于c++ - 如何实现一对多关系,同时允许以任何一种方式进行有效搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31689456/

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