On Mon, 10 Mar 2003 at 13:16 (+0100), Holger Macht wrote:
QStringList oList;
oList.append("Hallo"); oList.append("Leute");
cout << oList[0] << " " << oList[1] << endl; // ==> "Hallo Leute"
Die Verwendung statischer Arrays versuche ich zu vermeiden, wo es nur geht - Grund: Speicherplatzverschwendung, wenn man nicht alles benötigt, SIGSEGV, wenn man mehr benötigt ... QStringList belegt den Platz dynamisch. Allerdings sind Indexzugriffe bei vielen Elementen u. U. nicht sehr performant, hier könnte dann QValueVector ein Ausweg sein (hängt immer davon ab, was man machen möchte). Siehe die umfangreiche und gute Klassenreferenz von QT (bei SuSE unter file:///usr/lib/qt-3.0.3/doc/html/index.html, wenn QT-Doku installiert).
In der Klassenreferenz von QStringList habe ich aber leider nicht, gefunden, dass man so einfach mit list[..] auf die Elemente zugreifen kann. Das wusste ich eben nicht.
Klick mal auf `List all member functions'. Da steht dass es sowohl eine Methode `at' gibt als auch dass der Operator [] ueberladen ist.
ISt QStringList auch noch bei ca. 200 Strings oder ein paar mehr sinvoll?
Vielleicht solltest Du mal schreiben was Du mit den Strings vor hast. Wird die Liste oft sequentiell durchlaufen, findet oft ein Indexzugriff statt usw. QStringList erbt von QValueList, es handelt sich hierbei um verkettete Listen (`doubly linked list'). Wenn Du oft einen String ueber einen Index ansprechen musst sind verkettete Listen weniger geeignet, da natuerlich die Liste linear durchlaufen werden muss. Wenn Du aber die Strings oft durchlaufen musst dann sind sie sehr gut geeignet, auch wenn's 1000 sind. Es kommt also nicht unbedingt auf die Anzahl sondern vielmehr auf die Art des Zugriffs an. Bei einem Array hingegen kann direkt auf einen Index zugegriffen werden da ja nur sizeof(obj) * index gerechnet werden muss. Andererseits ist ein statisches Array von QString-Objekten natuerlich Platzverschwendung, es sei denn es sind immer genau 200 Stueck. Es wuerde sich _vielleicht_ ein Array von Zeigern auf QStrings anbieten, wobei das allerdings auch nur dann empfehlenswert ist wenn die Zahl nie groesser als 200 wird. Ausserdem muss man aufpassen dass man nicht ueber die Arraygrenzen hinauslaeuft. Wenn es weniger sind ist es nicht ganz so schlimm da so ein Zeiger ja nur 4 Bytes belegt. BTW: Die QT-Doku ist wirklich gut. :-) Gruß, Bern'der von QT keine Ahnung'hard -- _________ http://www.bwalle.de _________________________________________________ "Wenn zwei Menschen immer dasselbe denken, ist einer von ihnen überflüssig." -- Winston Churchill