Какой спокойный контейнерный класс использовать для отсортированного списка?

Часть моего приложения включает представляющие аудио формы сигнала. Пользователь сможет к увеличению / из формы сигнала. Начиная в полностью уменьшенном, я только хочу выбрать аудио в необходимых внутренностях для рисования формы сигнала в данном разрешении. Затем когда они увеличивают масштаб, асинхронно передискретизируют "упускающую суть" и обеспечивают более ясную форму сигнала. (Думайте Google Maps.) я не уверен лучшая структура данных для использования в спокойном мире. Идеально, я хотел бы сохранить образцы данных, отсортированные по времени, но со способностью к временной замене указывает по мере необходимости.

Так, например, точки данных могли бы первоначально быть похожими:

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 I, возможно, использовал a SortedList<int, int>. Каков был бы лучший класс для использования в QT? Или я должен использовать контейнер STL?

10
задан Dave Mateer 12 April 2010 в 15:47
поделиться

3 ответа

QMap автоматически сортируется, поэтому при повторении по нему создается отсортированный (по возрастанию) список.

Он также предоставляет Qmap :: upperBound () и QMap :: lowerBound (), которые вы можете использовать для своей функциональности поиска диапазона.

http://doc.qt.io/qt-5/qmap.html

10
ответ дан 4 December 2019 в 01:00
поделиться

Какой класс лучше всего использовать в Qt? Или лучше использовать контейнер STL?

Вы можете использовать std::map. Я рекомендую использовать контейнеры STL для бизнес-логики, а контейнеры Qt только тогда, когда это необходимо для привязки данных к вашему графическому интерфейсу.

EDIT: изменил std::set на std::map

-2
ответ дан 4 December 2019 в 01:00
поделиться

Я бы очень советовал вам заглянуть сюда: Generic Containers

Вы найдете хороший обзор различных классов контейнеров в Qt... Я бы также рекомендовал вам использовать один из них! Мне кажется, вы могли бы использовать QMap!

Надеюсь, это немного поможет!

3
ответ дан 4 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: