[英]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.