-1
Ich benutze qsort, um ein Array von ganzen Zahlen zu sortieren. Aber qsort nimmt keine Änderungen im Array vor. Meine Vergleichsfunktion ist wie folgt:qsort ändert keine Änderungen am Integer-Array
int mycomp(const void *a, const void *b){
int *a1 = (int*)a;
int *b1 = (int*)b;
if (a1 < b1)
return -1;
else if (a1 == b1)
return 0;
else
return 1;
}
Das Array enthält:
pos[M] = {40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 5, 10, 15, 20, 15, 30, 35};
Und ich rief qsort wie:
qsort(pos, M, sizeof(int), mycomp);
Der Ausgang genau das gleiche Array ist. Kann mir bitte jemand helfen?
Sie markiert diese als 'C++', 'C++ 14', usw., also warum verwenden Sie qsort in einem C++ Programm? ** Vermeiden Sie die Verwendung von qsort in einem C++ - Programm ** - verwenden Sie stattdessen 'std :: sort'. Es ist so einfach wie. 'std :: sort (std :: begin (pos), std :: end (pos));' – PaulMcKenzie
Das richtige Werkzeug, um solche Probleme zu lösen, ist Ihr Debugger. Sie sollten Schritt für Schritt durch Ihren Code * gehen, bevor Sie auf Stack Overflow nachfragen. Für weitere Hilfe lesen Sie bitte [Wie kleine Programme zu debuggen (von Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Zumindest sollten Sie Ihre Frage bearbeiten, um ein [minimales, vollständiges und verifizierbares] (http://stackoverflow.com/help/mcve) Beispiel einzufügen, das Ihr Problem zusammen mit den Beobachtungen, die Sie in der Debugger. –