Ich mache ein Blackjack-Spiel und habe ein Array erstellt, das als Hand fungiert, mit der der Benutzer behandelt wird. Ich möchte es so sortieren können, dass die Hand in numerischer Reihenfolge sortiert ist, so dass es einfacher ist zu bestimmen, welche Art von Hand der Benutzer hat. Hier ist meine sturct für die Karten:Sortierung eines Arrays von Strukturen (Karten)
struct ACard{
int num;
const char *pic;
};
ich das Array von int num
sortieren möchten. Ich habe versucht, einfach eine einfache Einfügesortierung zu verwenden, um die Sortierung zu vervollständigen, aber ich glaube, dass ich den Operator überladen muss, um dies zu tun, aber ich habe Probleme, da ich eine Struktur wie diese noch nie überladen habe. Hier ist, was ich für die Art haben bisher:
int i,j;
ACard key;
for(int i = 1; i < 5; i++){
key = userHand[i].num;
j = i - 1;
while(j >= 0 && userHand[j].num > key){
userHand[j + 1] = userHand[j];
j = j - 1;
}
userHand[j + 1] = key;
}
* Anmerkung userHand
ist die Anordnung von ACard's
, die ich sortieren möchten.
Gibt es einen Grund, warum Sie 'std :: array' oder' std :: vector' nicht verwenden, um die ACards zu speichern und 'std :: sort()' mit einem benutzerdefinierten Vergleicher zu verwenden? –
Warum verwenden Sie nicht 'std :: sort' mit einem Vergleich Lambda? – Quentin
Ich bin nicht vertraut mit der std :: sort(), könnten Sie das erklären? – zsloan112