Qt ist nicht nur ein Framework zu Anwendungsenwicklung, es erweitert auch C++ um die Kontrollstrukturen foreach
und forever
.
foreach
kann dazu verwendet werden über einen Container zu iterieren. Man kann also in folgendem Code die for
-Schleife durch eine foreach
-Schleife ersetzen:
for
:
QList<int> list; // ... for( int i = 0; i < list.size(); i++ ) std::cout << list[i] << std::endl;
foreach
:
QList<int> list; // ... foreach( int i, list ) std::cout << i << std::endl;
Die Laufvariable kann wie bei einer normalen for
-Schleife auch außerhalb der Schleife deklariert werden:
QList<int> list; // ... int i; foreach( i, list ) std::cout << i << std::endl;
Bei komplexeren Datenstrukturen sollten natürlich (bestenfalls konstante) Referenzen in der Schleife verwendet werden:
QList<QString> list; // ... foreach( const QString& str, list ) std::cout << str.toStdString() << std::endl;
Der Container kann innerhalb der Schleife zwar verändert werden, das hat jedoch keinen Einfluss auf den Schleifenablauf, da über eine Kopie iteriert wird. Dies hat jedoch aufgrund von Implicit Sharing geringen Einfluss auf die Performance.
forever
ist ein eigenes Schlüsselwort für Endlosschleifen. Sie kann daher nur durch return
, break
usw. verlassen werden.
sinnvolles Beispiel?