Also habe ich kürzlich von Java auf C++ umgestellt und erstelle ein Auswahlbeispiel, um die Vector-Bibliothek ein wenig besser kennenzulernen. Wenn ich jedoch versuche, das Programm auszuführen, gibt es keine Buildfehler, aber zwei Fehler beim Debuggen.Visual Studio wirft eine Menge Debugging-Fehler bei dieser Auswahl.
Nach ignorieren klicken, erhalte ich eine Tonne Warnungen wie diese:
Ich bin noch ziemlich neu in C++, so habe ich keine Ahnung, was verursacht diese Fehler und jede Hilfe würde sehr geschätzt werden. Hier ist der Code, den ich geschrieben habe, danke im Voraus. Wenn Sie weitere Informationen wünschen, fragen Sie bitte und ich werde zur Verfügung stellen, was benötigt wird.
#include <stdlib.h>
#include <vector>
#include <iostream>
using namespace std;
int findLowest(vector<int> in) {
int min = in[0];
int index = 0;
for (int i = 1; i < in.size(); i++) {
if (in[i] < min) {
min = in[i];
index = i;
}
}
return index;
}
void printVector(vector<int> in) {
vector<int>::iterator v = in.begin();
while (v != in.end()) {
cout << *v << endl;
v++;
}
}
vector<int> selectionSort(vector<int> toSort) {
vector<int> temp;
for (int i = 0; i < toSort.size(); i++) {
int tempIndex = findLowest(toSort);
temp.push_back(toSort[tempIndex]);
temp.erase(temp.begin() + tempIndex);
}
return temp;
}
vector<int> randomArray(int size) {
vector<int> temp;
for (int i = 0; i < size; i++) {
temp.push_back(rand() % 100);
}
return temp;
}
void main() {
vector<int> toSort = randomArray(20);
printVector(toSort);
vector<int> sorted = selectionSort(toSort);
printVector(sorted);
cin.ignore();
}
Sie sollten dies im Debug-Modus mit aktiviertem Debugger ausführen. siehe [Wie man kleine Programme debuggt] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/). –
Ich möchte auch darauf hinweisen, dass Sie wahrscheinlich unnötige Kopien Ihrer Arrays erstellen. Im Gegensatz zu Java werden alle Parameter unabhängig vom Typ als Wert übergeben. In Ihrem Fall wird Ihr toSort-Array * kopiert *, wenn 'selectionSort' aufgerufen wird. Wenn Sie nur eine Referenz benötigen (oder noch besser: eine konstante Referenz), müssen Sie dies explizit tun, z.'selectionSort (const vector & toSort)' –
CygnusX1
Um auf das, was @ CygnusX1 sagte, aufzubauen, siehe [dieses Beispiel von pass-by-value und pass-by-reference] (http://ideone.com/IXr4xz). –