Inhaltsverzeichnis

Kontrollstrukturen

Qt ist nicht nur ein Framework zu Anwendungsenwicklung, es erweitert auch C++ um die Kontrollstrukturen foreach und forever.

foreach

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

forever ist ein eigenes Schlüsselwort für Endlosschleifen. Sie kann daher nur durch return, break usw. verlassen werden.


FIXME sinnvolles Beispiel?