Часть моего приложения включает рендеринг звуковых сигналов. Пользователь сможет увеличить / уменьшить масштаб сигнала. Начиная с полностью уменьшенного масштаба, я хочу только сэмплировать звук на необходимых внутренних элементах, чтобы нарисовать сигнал с заданным разрешением. Затем, когда они увеличивают изображение, асинхронно повторно выбирают «отсутствующие точки» и обеспечивают более четкую форму сигнала. (Подумайте, Google Maps.) Я не уверен, лучшая структура данных для использования в мире Qt. В идеале я хотел бы хранить выборки данных, отсортированные по времени, но с возможностью заполнения точек по мере необходимости.
Так, например, точки данных могут изначально выглядеть так:
data[0 ms] = 10
data[10 ms] = 32
data[20 ms] = 21
...
Но когда они увеличатся, я получу больше очков по мере необходимости, возможно:
data[0 ms] = 10
data[2 ms] = 11
data[4 ms] = 18
data[6 ms] = 30
data[10 ms] = 32
data[20 ms] = 21
...
Обратите внимание, что значения в скобках - это значения поиска (миллисекунды), а не индексы массива.
Я должен иметь возможность эффективно запрашивать диапазон («все точки от 10 до 30 миллисекунд») и несколько эффективно вставлять новые точки.
В .Net я мог бы использовать SortedList<int, int>
. Какой класс лучше всего использовать в Qt? Или я должен использовать контейнер STL?