如何以一般自动方式计算集合(特别是列表)中特定类型的对象的数量,而不需要我提前识别特定类型的对象?
我有一个类,,Card
它被多次归类为hearts
,diamonds
和。玩家有一个. 我想计算每个玩家手中每种牌的数量。spades
clubs
std::list<Card *> hand
我无法计算特定对象类型的实例,因为我正在初始化一个deck
包含很多卡片的卡片,而我只想计算玩家手中的卡片。
我可以做一组 if 语句:
if ( strcmp( (*it)->cardType,"hearts")==0) {
...
} else if ( strcmp( (*it)->cardType,"diamonds")==0) {
...
} else if ...
但是如果我想添加一种新的卡片类型,这将变得乏味(我的目标是用大约 200 种卡片模拟游戏)。
将每个元素插入一个集合中会给我不同元素的数量,但我想知道每个不同元素的数量(“4 个红心,3 个俱乐部等”,而不是“4 个不同的花色”)。
在 C++ STL 中是否有已经实现的方法来执行此操作?