Es soll ein dynamisches Array sein, in dem jedes Element ein Array[8] ist. Da ja Qt die klassen anbietet, möchte ich kein C++ array benutzen.
ein std::vector oder QVector ist ne Komfortklasse fuer nen
dynamisch allokierte Felder , und damit niemalsnich nen ersatz fuer statische arrays !
Wer nen durch die aufgabenstellung vorgschriebenes unsigned char data[255]; z.b. durch nen vector<unsigned char> data, eresetzt, der gehoert in die Performance-Hoelle
In deinem Fall wuerd ich mir vielleicht sowas bauen :
Code: Alles auswählen
template<class AT,size_t SIZE>
class StaticArray
{
// dem teil nen statisches array als member geben ....
private:
AT mdata[SIZE];
// und dann alles was man braucht implementieren ....
// fuer die verwendung in den containern brauchst auf alle faelle nen CCTOR, Index operator und zueweisungsop waeren sicher auch ned schlecht ....
};
typedef StaticArray<char,8> MyDataClass;
QVector<MyDataClass> myArray;
um einmal kopieren wirst eh nich drumherumkommen .... da die objecte nie im dynamischen Array selber erstellen kannst ....
Man muss nich auf teufel komm raus die QT container verwenden ... , verwendest container in ner Multithreaded umgebung, wuerd ich auf die QT container eh verzichten, weil das verhalten implementationsbedingt ist durch das COW. stl container sind definierter, was das verhalten anbelangt ... dafuer muss man sich expliziet mehr gedanken um die performance machen, da die meist nicht selbst optimieren. in der STL muss man programmieren was man braucht (Mehrarbeit) die QT baut das was sie denkt was du brauchst ... hat aber oftmals dann auch recht damit
Ciao ...