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;
私はベクトルと同じ結果を得ています。私はIntegersランダムシャッフルでうまく動作しようとしました。私はプリミティブ以外のオブジェクトをシャッフルするときに何か特別なものが必要ですか?クラスのこれらのカードをベクトルでシャッフルしようとしています
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;
}
これは、彼らが正しく実装私の2つの演算子のオーバーロードの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。 –