Domanda su un QList in Qt
Domanda
Sto usando Qt 4.5 e im lavorare con un QList<QStringList>
che è una lista di lista di stringhe.
Ora voglio sostituire una stringa all'interno di una stringList ma con esso sembra insolito a digitare. Ho trovato il seguente modo di farlo e si chiedeva se è ok:
QList <QStringList> pDataList;
pDataList[listIndex].replace(QStringIndex, newString);
Ora, io non sono preoccupato per la sintassi, ma voglio sapere se i puntatori del pDataList
è adjascent in memoria in modo che sia bene usare []
. C'è un altro modo per farlo?
Soluzione
Il numero di elementi di pDataList
essendo adiacente in memoria non è correlato alla domanda se è ok per utilizzare operator[]
.
In generale, QList<>
non garantisce che i suoi elementi sono adiacenti in memoria, ma lo fa sovraccarico operator[]
per darvi l'elemento che stai cercando comunque.
L'unica cosa che devi preoccuparti di quando si fa qualcosa di simile è quello di fare in modo che (pDataList.size() < listIndex)
. In caso contrario, sarete l'indicizzazione elementi non è nella lista, innescando un'eccezione nel debug o un comportamento indefinito in rilascio.