Parte della mia applicazione riguarda il rendering delle forme d'onda audio. L'utente sarà in grado di ingrandire/ridurre la forma d'onda. A partire da zoom out, voglio solo campionare l'audio sugli interni necessari per disegnare la forma d'onda alla risoluzione data. Quindi, quando eseguono lo zoom in avanti, ricampionare in modo asincrono i "punti mancanti" e fornire una forma d'onda più chiara. (Pensa a Google Maps.) Non sono sicuro della migliore struttura dati da utilizzare nel mondo Qt. Idealmente, mi piacerebbe archiviare campioni di dati ordinati per tempo, ma con la possibilità di riempire i punti secondo necessità.Quale classe contenitore Qt utilizzare per un elenco ordinato?
Così, per esempio, i punti dati potrebbe inizialmente apparire come:
data[0 ms] = 10
data[10 ms] = 32
data[20 ms] = 21
...
Ma quando lo zoom avanti, vorrei ottenere più punti, se necessario, forse:
data[0 ms] = 10
data[2 ms] = 11
data[4 ms] = 18
data[6 ms] = 30
data[10 ms] = 32
data[20 ms] = 21
...
Si noti che la i valori tra parentesi sono valori di ricerca (millisecondi), non indici di array.
Dovrei essere in grado di interrogare in modo efficiente un intervallo ("tutti i punti tra 10 e 30 millisecondi") e inserire in modo un po 'efficiente nuovi punti.
In. Net Potrei aver utilizzato un SortedList<int, int>
. Quale sarebbe la migliore classe da usare in Qt? O dovrei usare un container STL?
Durante l'iterazione su un QHash, gli articoli sono ordinati in modo arbitrario. Con QMap, gli elementi sono sempre ordinati ** con il tasto **. – Yash