QList與QVector

看qt的文檔,只要是不要求數據所存放的內存是連續的,都建議用QList,因爲QList的查詢速度跟QVecotr是差不多的。感覺有點奇怪,至少與我之前所認識的List的查詢是一不樣的。好吧,看看源碼的。
原來QList的元素的指針是通過數組來管理的,而不是用next的方式。每當插入或者刪除一個元素時,QList就會更新這個指針數組。而查詢的時候,QList只需要通過下標從此指針數組中找到元素的指針,再通過元素指針找到對應的元素即可。因此其查詢複雜度跟QVector一樣,也是常數的。只是每次查詢比QVector多了一次指針尋址而已(當然QList[idx]的調用方式還會有些不同的)。
可見QList其實不僅僅是一個鏈表,可以說是一個數組與鏈表的結合體。

再說說QVecotr,就跟我們平時理解的一回事,就是維護一個數組了的類啦。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章