我的部分应用涉及渲染音频波形.用户将能够放大/缩小波形.从完全缩小开始,我只想在必要的内部采样音频以绘制给定分辨率的波形.然后,当它们放大时,异步重新采样"缺失点"并提供更清晰的波形.(想想谷歌地图.)我不确定在Qt世界中使用的最佳数据结构.理想情况下,我希望存储按时间排序的数据样本,但能够根据需要填写点数.
因此,例如,数据点最初可能如下所示:
data[0 ms] = 10
data[10 ms] = 32
data[20 ms] = 21
...
Run Code Online (Sandbox Code Playgroud)
但是当他们放大时,我会得到更多的积分,或许:
data[0 ms] = 10
data[2 ms] = 11
data[4 ms] = 18
data[6 ms] = 30
data[10 ms] = 32
data[20 ms] = 21
...
Run Code Online (Sandbox Code Playgroud)
请注意,括号中的值是查找值(毫秒),而不是数组索引.
我应该能够有效地查询范围("10到30毫秒之间的所有点")并且有效地插入新点.
在.Net我可能用过SortedList<int, int>
.什么是Qt中最好的课程?或者我应该使用STL容器?
Bri*_*ach 10
QMap会自动排序,因此迭代它会产生一个排序(升序)列表.
它还提供了Qmap :: upperBound()和QMap :: lowerBound(),您可以将它们用于测距功能.
http://doc.qt.io/qt-5/qmap.html