// // Created by alex on 7/14/25. // #include "Deck.h" Deck::Deck() : Deck(false) { } Deck::Deck(bool shuffled) { initialize_deck(); if (shuffled) { shuffle(); } cards_in_deck = deck.size(); } void Deck::initialize_deck() { for (auto r : Card::Ranks) { for (auto c : Card::Suits) { deck.emplace_back(c, r); } } } void Deck::print_deck() { std::cout << deck.size() << std::endl; for (auto c : deck) { std::cout << c << std::endl; } } void Deck::shuffle() { std::random_device rd; std::mt19937 g(rd()); std::ranges::shuffle(deck, g); } /** * * @return The card drawn from the top of the deck */ Card Deck::draw() { const Card temp = deck.at(cards_in_deck - 1); deck.pop_back(); cards_in_deck--; return temp; }