int main() {
std::vector<Card> listOfCards;
for (int j = 0; j < 52; j++) {
Card card(j/13, j % 13);
listOfCards.push_back(card);
}
std::random_shuffle(listOfCards.begin(),listOfCards.end());
for(int i = 0; i < listOfCards.size(); i++)
std::cout << listOfCards[i].display() << std::endl;
我得到的結果與它們在載體中一樣。我嘗試用整數隨機洗牌工作正常。當我洗牌非原始對象時,我需要什麼特別的東西嗎?我試圖洗牌這些卡在一個載體中
This is my Card class
class Card{
private:
int suit,rank,value;
public:
Card();
Card(int suit,int rank, int value);
Card(int suit,int rank);
顯示方法
std::string Card::display(){
std::string suits[] = {"Club","Spade","Heart","Diamond"};
std::string ranks[] =
{"Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"};
return suits[this->suit] + "\t" + ranks[this->rank];}
類
Card::Card(int suit, int rank) {
this->suit = suit;
this->rank = rank;
this->value = 0;
}
的構造這是我的兩個運算符重載functions.Are他們正確實施?
Card &Card::operator=(const Card &card) {
Card myCard;
myCard.suit = card.suit;
myCard.value = card.value;
myCard.rank = card.rank;
return myCard;
}
bool Card::operator<(const Card card) {
return this->getRank() < card.getRank();
}
卡片是如何申報的?你可以在這裏發佈嗎? – Zakir
*「當我洗牌非原始對象時,我需要什麼特別的東西嗎?」*不,你不需要。你的錯誤在別處。請[編輯]您的問題以提供[mcve]。 –
提醒:'std :: random_shuffle'在C++ 14中已棄用,並將在C++ 17中刪除。 –