Ich arbeite an einer Merge-Sortierfunktion. Ich habe das Problem gelöst - ich versuche, meinen Merge-Teil fertig zu bekommen. Angenommen, ich lerne C++, habe ein kursorisches Wissen über Zeiger und verstehe nicht alle Regeln von std :: vector :: iterator (oder std :: vectors, was das betrifft).Können Sie for Schleifen (ineinander) in C++ einbetten
Angenommen, num ist die Größe des ursprünglichen std :: vectors, die Werte (std :: copy) aus einem Array der Größe "int ar [num]" kopiert hat. Angenommen, farray hat die Werte von (0 bis (num/2)) und sarray hat die Werte von ((num/2) bis num).
int num = original.size();
std::vector<int> final(num);
for (std::vector<int>::iterator it = farray.begin(); it != farray.end(); ++it) {
for (std::vector<int>::iterator iter = sarray.begin(); iter != sarray.end(); ++iter) {
if (*it > *iter) final.push_back(*it);
else
final.push_back(*iter);
}
}
Dieser Code kompiliert und meine letzte stabile Version von Bloodshed Dev-C++ wirft keine Warnungen oder Fehler. Ich weiß nicht, ob das gültig ist, ich muss immer noch versuchen, alle Werte des Finales zu verbessern. Ich möchte nur wissen, ob das üblich ist, anfällig für Fehler oder einfach nur schlecht. Und wenn ja, wie würden Sie
Wenn Sie immer noch versuchen, Iteratoren und ähnliches zu verstehen, könnte es nützlich sein, sie in einer vertrauten Notation zu schreiben (wie mit dem [] -Operator) und dann, sobald sie funktioniert, zu Iteratoren zu wechseln. Aber bleiben Sie nicht bei [], denn Iteratoren sind wichtig zu verstehen, besonders wenn Sie zu anderen STL-Typen wie Maps und Sets usw. kommen. – Smashery