看qt的文档,只要是不要求数据所存放的内存是连续的,都建议用QList,因为QList的查询速度跟QVecotr是差不多的。感觉有点奇怪,至少与我之前所认识的List的查询是一不样的。好吧,看看源码的。
原来QList的元素的指针是通过数组来管理的,而不是用next的方式。每当插入或者删除一个元素时,QList就会更新这个指针数组。而查询的时候,QList只需要通过下标从此指针数组中找到元素的指针,再通过元素指针找到对应的元素即可。因此其查询复杂度跟QVector一样,也是常数的。只是每次查询比QVector多了一次指针寻址而已(当然QList[idx]的调用方式还会有些不同的)。
可见QList其实不仅仅是一个链表,可以说是一个数组与链表的结合体。
再说说QVecotr,就跟我们平时理解的一回事,就是维护一个数组了的类啦。
QList与QVector
最新推荐文章于 2025-09-25 17:14:00 发布
本文探讨了Qt库中QList与QVector两种容器的区别。QList采用指针数组管理元素,实现接近常数时间复杂度的查询操作,类似于数组与链表的结合。而QVector则直接维护一个元素数组,提供快速的随机访问。
797

被折叠的 条评论
为什么被折叠?



