我的部分应用涉及渲染音频波形。用户将能够放大/缩小波形。从完全缩小开始,我只想在必要的内部采样音频以绘制给定分辨率的波形。然后,当它们放大时,异步重新采样“缺失点”并提供更清晰的波形。 (想想谷歌地图。)我不确定在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容器吗?
答案 0 :(得分:10)
QMap会自动排序,因此迭代它会产生一个排序(升序)列表。
它还提供了Qmap :: upperBound()和QMap :: lowerBound(),您可以将它们用于测距功能。
答案 1 :(得分:3)
答案 2 :(得分:-2)
在Qt中使用的最佳课程是什么?或者我应该使用STL容器吗?
您可以使用std :: map。我建议将STL容器用于业务逻辑,并仅在需要将数据绑定到GUI时使用Qt容器。
编辑:将std :: set更改为std :: map