for-schleife
-
hallo
kann mir jemand erklären der unterschied zw. den Beiden For-shleifen:
for(int Num = 0; Num <10; ++Num)
for(int Num = 0; Num <10; Num++)was ist optimal für eine for schleife eine vorherige oder eine nachfolgede Inkrementierung?
-
Ist in diesem Fall total egal.
Die 3. Angabe wird sowieso erst nach Abarbeitung der Schleife ausgeführt.
-
und mit noch mehr geschwafel:
http://volkard.de/C++/FAQ/C++/++iterator_oder_iterator++_bei_for-schleife/index.html
-
Nimm an Numm wäre kein int sondern ein Objekt. Für Objekte ist üblicherweise
der Prefix-Operator schneller asl der Postfix-Operator. In deisem Fall wäre
daher Variante 1 die Günstigere.
-
Chew-Z schrieb:
Für Objekte ist üblicherweise
der Prefix-Operator schneller asl der Postfix-Operator.gibts da 'ne erklärung für?
-
Zwei posts vor dir stehts doch
Vokard schrieb:
Denn beim Schreiben von selbstgebauten Operatoren kann man ja auch ++i und i++ implementieren. Dabei ist ein ++i schnell gemacht. Irgendwie das Inkrementieren hinkriegen und return *this; als referenz. Aber i++ ist schwer. man muss den alten Wert erst speichern, dann muss man noch by value returnen. Uih, Kosten über Kosten. Man mag bei selbergebauten Typen ++i einfach so viel lieber, daß Leute wie ich bereits dazu übergehen, nur ++i anzubieten und i++ wegzulassen.
-
Helium schrieb:
Zwei posts vor dir stehts doch
Vokard schrieb:
Denn beim Schreiben von selbstgebauten Operatoren kann man ja auch ++i und i++ implementieren. Dabei ist ein ++i schnell gemacht. Irgendwie das Inkrementieren hinkriegen und return *this; als referenz. Aber i++ ist schwer. man muss den alten Wert erst speichern, dann muss man noch by value returnen. Uih, Kosten über Kosten. Man mag bei selbergebauten Typen ++i einfach so viel lieber, daß Leute wie ich bereits dazu übergehen, nur ++i anzubieten und i++ wegzulassen.
na gut, kann ich auf die schnelle aber nicht nachvollziehen (warum man für i++ eine kopie machen muss z.b.) dafür fehlen mir dann doch die c++ kenntnisse
-
net schrieb:
na gut, kann ich auf die schnelle aber nicht nachvollziehen (warum man für i++ eine kopie machen muss z.b.) dafür fehlen mir dann doch die c++ kenntnisse
int i=1; int foo=++i; //welchen wert hat foo, welchen i? int i=1; int foo=i++; //welchen wert hat foo, welchen i?
-
Shade Of Mine schrieb:
int i=1; int foo=++i; //welchen wert hat foo, welchen i? int i=1; int foo=i++; //welchen wert hat foo, welchen i?
im ersten fall: foo == 2, i == 2
im zweiten: foo == 1, i == 2
aber was hat das mit meiner frage zu tun?
höchstens soviel, das i++ leichter zu realisieren ist als ++i, weil man ja erst hinterher hochzählen muss
-
net schrieb:
aber was hat das mit meiner frage zu tun?
höchstens soviel, das i++ leichter zu realisieren ist als ++i, weil man ja erst hinterher hochzählen mussNein, genau anders herum
Bei i++ musst du den aktuellen Wert zwischenspeichern, dann erhöhen und danach den zwischengespeicherten Wert zurückgeben. Was darüber hinaus natürlich auch bedeutet dass du nicht einfach eine konstante Referenz zurückgeben kannst sondern ein neues Objekt erzeugt werden muss.
-
finix schrieb:
Nein, genau anders herum
Bei i++ musst du den aktuellen Wert zwischenspeichern, dann erhöhen und danach den zwischengespeicherten Wert zurückgeben. Was darüber hinaus natürlich auch bedeutet dass du nicht einfach eine konstante Referenz zurückgeben kannst sondern ein neues Objekt erzeugt werden muss.ah, danke
das leuchtet ein. hätt ich auch selber drauf kommen können, hatte einfach 'n brett vorm kopf