コレクション (具体的にはリスト) 内の特定のタイプのオブジェクトの数を、特定のタイプのオブジェクトを事前に特定する必要のない一般的な自動方法でカウントするにはどうすればよいですか?
、、およびCard
に数回サブクラス化されたクラス があります。プレイヤーは. 現在、各プレイヤーの手札にある各タイプのカードの数を数えたいと思います。hearts
diamonds
spades
clubs
std::list<Card *> hand
特定の object types のインスタンスを数えることはできません。これは、多数のカードを含む を初期化してdeck
いて、プレイヤーの手札にあるものだけを数えたいためです。
一連の if ステートメントを実行できます。
if ( strcmp( (*it)->cardType,"hearts")==0) {
...
} else if ( strcmp( (*it)->cardType,"diamonds")==0) {
...
} else if ...
しかし、新しいカード タイプを追加したい場合、これは面倒です (約 200 種類のカードでゲームのプレイをシミュレートすることを目指しています)。
各要素をセットに挿入すると、個別の要素の数がわかりますが、それらの個別の要素のそれぞれの数を知りたいです (「4 つの異なるスーツ」ではなく、「4 つのハート、3 つのクラブなど」)。
C++ STL でこれを行うための実装済みのメソッドはありますか?