Ich arbeite mit Sets für eine Übung, und ich habe eine Fehlermeldung, die ich nicht interpretieren kann. Ich bin nicht so versiert mit den technischen Aspekten der Programmierung. Ich bin ein Mathe-Student, also habe ich mich nur wirklich auf die eigentliche Programmierung konzentriert, also gewisse Fehler, mit denen ich einfach nicht umgehen kann.C++ Fehler mit Std :: Set
Ich machte den Satz und eingefügt jede ganze Zahl von 0 bis 100 mit den Endpunkten. Ich wollte dann jede durch 2 teilbare ganze Zahl außer 2 selbst löschen. Hier ist der Code:
set<int> intSet;
for (int i = 0; i < 101; i++) {
intSet.insert(i);
}
for (set<int>::iterator twoDivIt = intSet.begin(); twoDivIt != intSet.end(); twoDivIt++) {
if (*twoDivIt % 2 == 0) {
if (*twoDivIt == 2) {
continue;
}
else {
intSet.erase(twoDivIt);
}
}
}
for (set<int>::iterator it = intSet.begin(); it != intSet.end(); it++) {
std::cout << *it << "\t";
}
ich ein Popup-Fenster bekommen sagen mir die debuc Behauptung nicht, und dass „Karte/set Iterator nicht inkrementierbarer“. Was habe ich falsch gemacht?
löschen, während das Iterieren eine wirklich schlechte Idee ist. – tkausl
Ist es in diesem Fall besser, ganze Zahlen zu durchlaufen und die zu löschen, die ich löschen möchte? – Auclair
Warum fügen Sie sogar alle Ganzzahlen hinzu? Anstatt alle zu addieren und die geraden zu entfernen, könntest du nur die ungeraden hinzufügen. – tkausl