====== Container ====== Qt stellt ähnlich wie die STL verschiedene Datenstrukturen als Klassen bereit. Die Container von Qt bieten aber noch mehr Funktionen an. Sie können auch jederzeit durch Aufruf der Methode ''toStd[Type]()'' (z.B. ''toStdList()'', ''toStdVector()'') in STL-Container umgewandelt werden.\\ FIXME QStack, ausführlicher... ===== Speicher aller Elemente freigeben ===== Werden im Container Zeiger gespeichert, so muss deren Speicher natürlich freigegeben werden. Das kann man mit einer einfachen Schleife erledigen: while(container.size() > 0) delete container.takeLast(); Da dies aber sehr häufig vorkommt, ist dieser Algorithmus in ''qDeleteAll()'' bereits implementiert. Oben genannten Code könnte man also auch so schreiben: #include // ... qDeleteAll(container); ===== Beispiele ===== ==== QList ==== #include #include using namespace std; int main () { QList list; for (int i = 0; i < 100; i++) list.push_back (i); // Werte von 0-99 in die Liste einfügen cout << "Anzahl der Elemente: " << list.size () << endl; cout << "Element mit Index 5 und Wert " << list.takeAt (5) << " wird aus der Liste entfernt" << endl; // Element entfernen und zurückliefern cout << "Element mit Index 50: " << list[50] << endl; // Index-Operator cout << "Index von Element mit Wert 10: " << list.indexOf (10) << endl; // Index von Wert cout << "Entferne letztes Element" << endl; list.pop_back (); // letztes Element entfernen cout << "Neue Anzahl der Elemente: " << list.size () << endl; return 0; } Ausgabe: Anzahl der Elemente: 100 Element mit Index 5 und Wert 5 wird aus der Liste entfernt Element mit Index 50: 51 Index von Element mit Wert 10: 9 Neue Anzahl der Elemente: 98 ==== QVector ==== #include #include using namespace std; int main () { QVector v1, v2, v3; for (int i = 0; i < 50; i++) v1.push_back (i); // Werte von 0-49 in den Vektor einfügen for (int i = 50; i < 100; i++) v2.push_back (i); // Werte von 50-99 in den Vektor einfügen v1.insert (0, 101); // Wert 101 an Index 0 einfügen cout << "Anzahl Elemente v1: " << v1.size () << endl; cout << "Anzahl Elemente v2: " << v2.size () << endl; cout << "Verkettung der beiden Vektoren zu v3" << endl; v3 = v1 + v2; // Vektoren verketten cout << "Anzahl Elemente v3: " << v3.size () << endl; return 0; } Ausgabe: Anzahl Elemente v1: 51 Anzahl Elemente v2: 50 Verkettung der beiden Vektoren zu v3 Anzahl Elemente v3: 101 ==== QQeue ==== #include #include using namespace std; int main () { QQueue q; for (int i = 0; i < 5; i++) q.enqueue (i); // Werte 0-4 in die Queue einfügen while (q.size () != 0) cout << q.dequeue () << endl; // Alle Werte aus der Queue lesen return 0; } Ausgabe: 0 1 2 3 4