[英]QMap vs QList Class in the Qt framework
我试图决定在将来的某些Qt项目中使用QList还是QMap类。 为了确定最适合我的选择,我想确定它们的某些相似之处和不同之处,以便了解在某些情况下最有效的方法。 我对这些异同的理解正确吗?
相似点:
都是容器
两者都包含无序数据
区别:
QMap具有键值对,而QList仅具有值
QMap使用哈希函数将值放置在适当的索引中,而QList只是追加条目
还有更多相似和不同之处吗?
我可以看一下通用的计算机科学定义,但我读到某处Qt框架可能存在细微差别。
QList
和QMap
的数据组织方式不同。 这导致不同的性能和稍微不同的内存消耗(在大多数情况下,后者通常无关紧要)。 您可以在Qt文档中找到计算复杂性 。 如果要存储很多元素,则可能会有很大的不同。 考虑选择容器时要多久访问一次数据(搜索vs.插入vs.删除)。
[但是请记住,算法复杂度是仅对大n有效的理论属性。 实际上,由于引用的局部性,通过具有少量元素(<1,000)的数组进行线性搜索通常优于列表/树。 如果您不关心性能,请不要猜测,请务必进行评估。]
两者都包含无序数据
对于QMap
实际上并非如此。 QMap
被实现为自平衡二进制搜索树 ,它是一种排序的数据结构。
顺便说一句:您通常可以以一种通用的方式来实现您的代码,这使得以后可以轻松切换到另一个容器类型(例如,如果访问模式更改或您的假设被证明是错误的)。 使用auto
可以帮助您减轻痛苦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.