Ausruck für Forschleife auf eine Variable setzen??
-
Hallo ihr Spezialisten der Programmierkunst,
Ich habe folgende Frage:
Ich habe eine Funktion in der ich eine Forschleife unter erfüllten Bedingungen
jeweils mit einem anderen Ausdruck testen muss. Nun suche ich eine Möglichkeit das Ganze geschickt an zustellen.mal ein Gedankenbeispiel in C++ :
fortest1 = (count < test) fortest2 = (count > test) usw. for(count=0; fortest1; count++)
ich möchte also den Ausdruck wechseln können, gibt es da Möglichkeiten??
-
guck dir mal #define an
-
korke3000 schrieb:
guck dir mal #define an
Geht auch ohne... (ungetestet)
class Test1 { int max; public: Test1(int max) : max(max) {} bool operator()(int i) const { return i < max; } }; struct Test2 { bool operator()(int i) const { return i % 2 == 0; } }; template<class Func> void test(const Func& func) { for(int i = 0; func(i); ++i) foo(i); } int main { test(Test1(100)); test(Test2()); }
EDIT: Noch ein bißchen erweitert
-
Mit define hatte ich schon gedacht aber wie verändere ich den Ausdruck zur Laufzeit?
Das müsste dann irgend wie so aussehen?:#define fortest1 (count < test) #define fortest2 (count > test) bool Flag true; for(count=0; (Flag) ? fortest1:fortest2 ; count++)
Das schaut schon recht ineressant aus.
Test(int max) : max(max) {} bool operator()(int i) const {return i < max;}
Ein paar Stichworte könnten mir dann noch zum Verständnis verhelfen.
Ansonsten besten Dank erst mal.
-
warum nicht einfach
for(int count = 0; count < max && flag || count > max && !flag; count++)
oO
-
Ja das würde auch funktionieren. Was ich gestern schon gedanklich dahin geschrieben habe funktioniert tatsächlich. Das dürfte dann am effizientesten sein.
for(long count=0; ForFlag?Test<Var:Test>Var ;count++)
Gruß Jens