【发布时间】:2014-07-16 22:54:21
【问题描述】:
实现万智牌或口袋妖怪纸牌游戏哪个更好? 我听说链表在从牌组中添加/删除卡片时更快更有效;不过,我听说动态数组搜索特定卡片的速度更快。
你知道洗牌哪个更快吗?
那你觉得我应该用哪个来制作像精灵宝可梦tcg这样的游戏http://hum1l1ation.hubpages.com/hub/PlayPoketcgDummy
我可以同时使用两者,还是一副牌可以只是堆叠?
到目前为止,我的设计将是卡组类中卡片类的动态数组。
【问题讨论】:
-
你衡量链表的实现与动态数组的实现,然后你决定。
-
如果一副牌中只有 50 或 100 张卡片(或只有 1000 张),那么这两种数据结构都会非常快,以至于您永远不会注意到差异。这完全是错误的优化方式。
-
std::deque实际上可能是这里选择的数据结构。 -
@Brian:顺便说一下,大多数
deque实现都使用数组的链表。 -
甲板上的顺序重要吗?你需要随机访问吗?基本上,数据结构选择是一个庞大而复杂的话题。我们可以回答诸如“哪个更快洗牌”之类的个别问题,但总体上应该选择哪个则不太清楚,这仅仅是因为当您传达了影响该决定的所有信息时,您已经超出了问题的范围,它' 也会“过于本地化”(因为它几乎是“请为我解决这个确切的晦涩问题”)。 That said, when the choice is array versus linked list,
std::vectoris a good default.
标签: c++ dynamic linked-list stack