可能重复:
Enumerate over an enum in C++
C++: Iterate through an enum
我有一个二十一点游戏的卡片类,其中包含以下枚举:
enum Rank { Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King };
enum Suit { Clubs, Diamonds, Hearts, Spades };
当我创建套牌时,我想编写如下代码:
// foreach Suit in Card::Suit
// foreach Rank in Card::Rank
// add new card(rank, suit) to deck
我相信c ++中没有foreach。但是,我如何遍历枚举?
谢谢, 斯潘塞
答案 0 :(得分:20)
通常会向enum
添加元素以促进此操作:
enum Rank {
Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King,
RankFirst = Ace, RankLast = King
};
enum Suit {
Clubs, Diamonds, Hearts, Spades,
SuitFirst = Clubs, SuitLast = Spades
};
然后你可以把你的循环编写为:
for (int r = RankFirst; r <= RankLast; ++r) {
for (int s = SuitFirst; s <= SuitLast; ++s) {
deck.add(Card((Rank)r, (Suit)s));
}
}