C++ 我应该使用多个向量还是枚举状态

C++ 我应该使用多个向量还是枚举状态,c++,vector,enums,C++,Vector,Enums,所以我正在做一个简单的纸牌游戏。现在,我正在使用大约4个不同的Vector容器来存放牌组中的牌、手牌、入牌和弃牌。我正要开始编写代码,以便在必要时将卡从输入向量移动到丢弃向量,我意识到我可能可以使用2个向量并枚举一组卡状态来区分卡在游戏场中的位置 我的想法是: class Card { Enum class CardState { InHand, InPlay, Discarded }; //other card

所以我正在做一个简单的纸牌游戏。现在,我正在使用大约4个不同的
Vector
容器来存放牌组中的牌、手牌、入牌和弃牌。我正要开始编写代码,以便在必要时将卡从输入向量移动到丢弃向量,我意识到我可能可以使用2个向量并枚举一组卡状态来区分卡在游戏场中的位置

我的想法是:

class Card
{
    Enum class CardState
    {
        InHand,
        InPlay,
        Discarded
    };

    //other card class data
};
然后我可以在play中迭代一个
向量,并对照这些标志进行检查。甲板仍然是它自己的向量容器


这会比在整个游戏中管理3个不同的容器更容易吗?

如果我要实现它,我宁愿创建一个甲板对象,一个玩家对象,并为游戏中可能的任何动作创建方法。在开始时多做一些工作,这样会更容易处理


注意:数据结构应根据您对卡的操作来选择。。例如,如果在你的游戏中,你有很多关于“这副牌有这张牌吗?”的疑问,我会说使用地图,而不是每次迭代50张牌。。。所以答案是这要看情况而定。

欢迎来到cpu时间vs内存空间vs代码维护

幸运的是,在这种情况下,cpu时间和内存空间的问题可以忽略不计

然而,代码维护并不重要

尝试维护三个不同的卡片“堆栈”并不是设计的最佳方式。这将给你一个非常,也就是说,不明显的,提高速度,但增加的代码维护成本使它甚至不值得

你所做的是正确的


保留一张卡片可以处于的状态的枚举。如果需要该状态下所有卡片的列表,请遍历向量以查找该状态下的卡片。

我以前没有使用过贴图。我实际上是从列表开始的,但是把它改成了向量,因为它们更容易在卡片之间迭代和“移动”。我希望你能给我一些研究的东西,但我还没有达到15次。哈哈,谢谢你想谢谢,船长!如果你不知道的话,我正在做的项目是一个简单的魔法克隆,所以我有另一个情况,我想知道。如果一张牌在游戏中,它可以在该状态下有多个状态(点击、召唤疾病等。我没有使用这些确切的状态,只是示例)你会如何推荐类似的东西?使用“当前状态”列表。例如:vector currentStates您可以添加帮助器方法,如:bool isInState(CardState state)