std::set<CardSet> createCardSet(size_t numCards, Card::Grouping grouping) { std::set<CardSet> ret; combinations cards(52, numCards); do { CardSet hand; for (size_t i = 0; i < numCards; i++) { hand.insert(Card(cards[i])); } switch (grouping) { case Card::RANK_SUIT: ret.insert(hand); break; case Card::SUIT_CANONICAL: ret.insert(hand.canonize()); break; case Card::RANK: ret.insert(hand.canonizeRanks()); break; }; } while (cards.next()); return ret; }