日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Dictionary,hashtable, stl:map有什么异同?

發布時間:2025/3/18 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dictionary,hashtable, stl:map有什么异同? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Dictionary,hashtable, stl:map有什么異同?

?

相同點:字典和map都是泛型,而hashtable不是泛型。

不同點:三者算法都不相同

Hashtable,看名字能想到,它是采用傳統的哈希算法:探測散列算法,而字典則采用的是散列拉鏈算法,效率較高,空間也小。Stl:map使用的是紅黑樹算法,效率最低為o(nlogn)

?

這里要注意的是 dictionary使用的是拉鏈式哈希算法,在算法內部要對KEY進行哈希計算,即 comparer.GetHashCode(object o),就是說在C#中以值類型作KEY時(整形除外)都會發生裝箱操作,

如以enumkey,是C#中造成GC ALLOC的典型原因。

注意數值類型(int, float, double等)int型作dictionarykey不會有GC ALLOC,這是因為c#有一個對應的重載,如comparer.GetHashCode(int key)的重載。

而其它類型則沒有對應重載,自定義類型當然不會有對應重載了。

posted on 2018-09-06 19:57 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏

總結

以上是生活随笔為你收集整理的Dictionary,hashtable, stl:map有什么异同?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。