什么Qt容器类用于排序列表?

时间:2010-04-12 15:39:22

标签: qt list

我的部分应用涉及渲染音频波形。用户将能够放大/缩小波形。从完全缩小开始,我只想在必要的内部采样音频以绘制给定分辨率的波形。然后,当它们放大时,异步重新采样“缺失点”并提供更清晰的波形。 (想想谷歌地图。)我不确定在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容器吗?

3 个答案:

答案 0 :(得分:10)

QMap会自动排序,因此迭代它会产生一个排序(升序)列表。

它还提供了Qmap :: upperBound()和QMap :: lowerBound(),您可以将它们用于测距功能。

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

答案 1 :(得分:3)

我强烈建议你看看这里:Generic Containers

你会在Qt中找到不同容器类的一个很好的总结...我也建议你使用其中一个!在我看来你可以使用QMap!

希望它有所帮助!

答案 2 :(得分:-2)

  

在Qt中使用的最佳课程是什么?或者我应该使用STL容器吗?

您可以使用std :: map。我建议将STL容器用于业务逻辑,并仅在需要将数据绑定到GUI时使用Qt容器。

编辑:将std :: set更改为std :: map