QList与QVector

看qt的文档,只要是不要求数据所存放的内存是连续的,都建议用QList,因为QList的查询速度跟QVecotr是差不多的。感觉有点奇怪,至少与我之前所认识的List的查询是一不样的。好吧,看看源码的。
原来QList的元素的指针是通过数组来管理的,而不是用next的方式。每当插入或者删除一个元素时,QList就会更新这个指针数组。而查询的时候,QList只需要通过下标从此指针数组中找到元素的指针,再通过元素指针找到对应的元素即可。因此其查询复杂度跟QVector一样,也是常数的。只是每次查询比QVector多了一次指针寻址而已(当然QList[idx]的调用方式还会有些不同的)。
可见QList其实不仅仅是一个链表,可以说是一个数组与链表的结合体。

再说说QVecotr,就跟我们平时理解的一回事,就是维护一个数组了的类啦。

你可能感兴趣的:(QList与QVector)