Selective Schleife?
-
Gibt es ne möglichkeit eine selektive Schleife zu coden?
Bsp.: Habe eine Array/liste/vector etc. welche als Elemen eine Struktur enthält. die Struktur enhält ein boolean Flag "select". Nun sollen die
Elemente iteriert werden, dabei sollen aber nur die Element durlaufen werden, welche "select" true haben.Im normalfall würde ich es so machen
for(std::vector<....>::iterator it= XXX.begin(); it != XXX.end(); it++)7 if(it->select) continue; /*do Something*/ }oder gibts da was eleganters?
-
Etwas eleganteres fällt mir in C++ nicht ein.
(btw, dein Beispielcode bearbeitet genau die Elemente, bei denen select==false ist ;))
-
oh stimmt... aber egal.. scahde das es keine bessere möglichkeit gibt
-
Eventuell würde es ja etwas bringen, die Datenstrukturen umzubiegen und jedem Element einen Zeiger auf das nächste selektierte Element zu geben - dann kannst du dich an diesen Zeigern durchhangeln und überspringt die dazwischenliegenden Elemente.
-
müsste da nen eigenen iterator schreiben.. bzw. ableiten
-
Eine weitere Möglichkeit wäre noch ein boost::filter_iterator
