在foreach中的C ++枚举 [英] C++ enum in foreach
本文介绍了在foreach中的C ++枚举的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
可能的重复项:
在C ++中枚举枚举
C ++:迭代枚举
对于具有以下枚举的二十一点游戏:
枚举Rank {Ace,Two,Three,Four,Five,Six,八,九,十,杰克,女王,王};
enum Suit {Clubs,Diamonds,Hearts,Spades};
当我创建套牌时,我想这样编写代码:
// foreach Suit in Card :: Suit
// foreach卡中的排名:: Rank
//添加新卡,suit)to deck
我相信在c ++中没有foreach。
解决方案
/ div>
通常向枚举
添加元素以便于:
枚举排名{
Ace,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Jack,Queen,King,
RankFirst = Ace,RankLast = King
};
enum Suit {
俱乐部,钻石,心,黑桃,
SuitFirst =俱乐部,SuitLast =黑桃
};
然后你可以将你的循环写成:
for(int r = RankFirst; r <= RankLast; ++ r){
for(int s = SuitFirst; s <= SuitLast; ++ s) {
deck.add(Card((Rank)r,(Suit)s));
}
}
Possible Duplicates:
Enumerate over an enum in C++
C++: Iterate through an enum
I've have a card class for a blackjack game with the following enums:
enum Rank { Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King };
enum Suit { Clubs, Diamonds, Hearts, Spades };
When I create the deck I want to write the code like this:
// foreach Suit in Card::Suit
// foreach Rank in Card::Rank
// add new card(rank, suit) to deck
I believe there is no foreach in c++. However, how do I traverse an enum?
Thanks, Spencer
解决方案
It is common to add elements to the enum
to facilitate this:
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
};
Then you can write your loops as:
for (int r = RankFirst; r <= RankLast; ++r) {
for (int s = SuitFirst; s <= SuitLast; ++s) {
deck.add(Card((Rank)r, (Suit)s));
}
}
这篇关于在foreach中的C ++枚举的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文