常用數據結構

常用數據結構

  • 數組
  • 隊列
  • 鏈表
  • 圖,最短路徑的查詢,
  • 哈希表,把數據的存儲和查找消耗的時間大大降低,幾乎可以看成是常數時間;而代價僅僅是消耗比較多的內存。

C++中數據組織方式

  • 數組,內置的數據類型,存放類型相同的對象的容器,數組的大小確定不變,不能隨意向數組中增加元素
    • 存放在棧中,其內存的分配和釋放完全由系統(tǒng)自動完成
  • vector 封裝數組,連續(xù)內存,vector的大小可以變化,可以向數組中增加元素
    • 支持隨機訪問即[]或vector.at()
    • 存放在堆中,由STL庫中程序負責內存的分配和釋放,使用方便。
    • 執(zhí)行效率,數組>vector向量。主要原因是vector的擴容過程要消耗大量的時間
  • list 封裝了雙向鏈表
    • 內部插入、刪除方便;不支持隨機訪問([]),單個元素內存相對占用內存大
  • deque 雙向隊列,多個連續(xù)內存,功能上合并了vector和list。
    • 支持隨機訪問,內部插入刪除方便;占用內存大
    • 注:vector,高效的隨即存取,而不在乎插入和刪除的效率
      list,大量的插入和刪除,而不關心隨即存取
      deque,隨即存取,而且關心兩端數據的插入和刪除
  • stack 基于deque實現,封裝棧
  • queue 基于deque實現,封裝了隊列
  • map 紅黑樹實現,提供key-value的存儲和查找功能
  • set 平衡二叉樹實現,時間復雜度O(lgN);類似于集合,里面的元素不會重復,而且呈現為有序性
  • multiset 平衡二叉樹實現,允許有重復元素
  • hash_set 底層用hash table實現,時間復雜度取決于哈希函數和哈希負載情況;里面的元素不會重復。
  • hash_map,基于hash table實現,提供key-value的存儲和查找功能
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • STL部分 1.STL為什么廣泛被使用 C++ STL 之所以得到廣泛的贊譽,也被很多人使用,不只是提供了像vec...
    杰倫哎呦哎呦閱讀 4,456評論 0 9
  • 數組Array,集合(List,Set,隊列Queue,棧Stack),散列表Map 一、數組:長度固定,元素類型...
    夏日橘子冰閱讀 322評論 0 0
  • Java是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平臺移植性和...
    Java小辰閱讀 1,080評論 1 7
  • 周末,永遠都是上班族最喜愛的小長假,當然,前提是,不加班,不趕工,只有時間、自己和自由。 睡到自然醒,沖上一杯咖啡...
    剪盡萬世浮塵閱讀 293評論 0 0
  • 目標:輕松實現月收入2萬元,順利實現收支平衡,略有富余。 計劃實施: 1早上給財神爺婆婆財神爺爸爸財神爺媽媽發(fā)送微...
    袁惠麗幸?;ㄩ_閱讀 291評論 0 0

友情鏈接更多精彩內容