2016-12-15 5 views
0

Ich lerne gerade C++, und ich bin zu meinem ersten Problem gekommen. Ich benutze Visual Studio und C++ 11. dies ist der code:Problem mit der Sortierfunktion, die Werte ersetzt

Wie Sie sagen können, bittet es Sie, 5 Nummer einzugeben und es fügt sie hinzu. Wenn ich cout verwende, gibt es den Inhalt des Vektors korrekt aus. Sobald ich die Sortierzeile hinzugefügt habe, hatte ich Probleme. Es sortiert den Vektor korrekt, außer dass der niedrigste Wert durch den ersten Wert ersetzt wird, obwohl er in die richtige Reihenfolge gebracht wird. Beispiel:

Enter 5 numbers to add. 87 95 61 43 2 87 43 61 87 95 Your total is 373

Auch eine weitere Frage wird mit item::intList dem besten/effizienten Weg, um einen Vektor zu durchlaufen. Ich bin sicher, dass dies eine offensichtliche Lösung ist. Vielen Dank.

Antwort

3

Sie müssen den Anruf neu sortieren, um ihn so zu sortieren, dass er außerhalb der for-Schleife liegt.

Gegenwärtig macht Ihre Sortierung den Iterator ungültig (bei seinem ersten Aufruf als danach ist es ein No-Op), was den beobachteten Effekt verursacht.

(Ich bin sicher, dass Sie wissen, dass Sie den Vektor nicht sortieren müssen, um die Summe zu berechnen.)

+0

Das funktioniert! Ich bin ein wenig unklar über die Ungültigmachung des Iterators und warum es nur den ersten Wert der Sorte betrifft. – John

+0

Ich sortiere nur, weil ich Vektoren lernen will. Fehler wie diese zu haben hilft mir zu lernen. – John

+0

Im Wesentlichen nachfolgende Sortierungen haben keine Auswirkung. Und google 'iterator invalidation'. – Bathsheba

Verwandte Themen