====== 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