1樓:網友
用紅黑樹雖然速度讓州可能會略遜於雜湊,但是整體來說,應該更節省記憶體。
速度我們不說,肯定慢很多。
省記憶體,我們來分析一下。
乙個紅黑樹的節點,有左右節點指標,和父節點坦差蔽指標,這就是三個指標的大小+value_type的大小;
unordered_map呢,開放位址法,就value_type,如果是開鏈法,那就是prev指標和next指標,倆指標+value_type
也就是說,當你的value_type越小,紅黑樹越浪費記憶體慶春。
而hash table呢,主要是填充因子,比如的填充因子,那麼那些桶是要浪費一些記憶體的。
2樓:活寶
一群人啥都不懂在這瞎bb,呵呵。
首先考慮都是做儲存用途而不是用作抽象資料結構。你如果問題本身就只能用樹建模(上下級關係,依賴),這種誰會用hash?用點腦子好吧。
還說什麼嫌納有序不有序,hash結構又不是在這種情況下和樹比的。
只有都能做儲存用途,例如存字典,這個時候才是兩種資料結構都能用的,此時hash表佔用空間高,插入查詢速度都相對快,紅黑樹速度都相對慢,空間佔用低。
還有人說紅黑樹比hash快的,我也是笑笑,那隻能說明你hash演算法寫的有問題。
還有hash如果及時擴充的話平均演算法複雜度是o(1),不是什麼o(n),根本就不可能在到o(n),o(n)之前早就重新hash了。樓上的奇葩真是亮瞎了我的眼睛,基唯派礎沒學好就出來誤人子弟芹山沒。
stl中set底層實現方式?為什麼不用hash
3樓:網友
紅黑樹與hash table最大的不同是,紅黑樹是有序結構,而hash table不是。但不是說set就不能用hash,如果只是判斷set中的元素是否存在,那麼hash顯然更合適,因為set 的訪問操作時間複雜度是log(n)的,而使用hash底層實現的hash_set是近似o(1)的。
然而,set應該更加被強調理解為「集合」,而集合所涉及的操作並、交、差等,即stl提供的如交集set_intersection()、並集set_union()、差集set_difference()和對稱差集set_symmetric_difference(),都需要進行大量的比較工作,那麼使用底層是有序結構的紅黑樹就十分恰當了,這也是其相對hash結構的優勢所在。
c++map有什麼用
4樓:網友
map是stl容器,內部實現是紅黑樹,插入較慢,但是查詢很快iterator是指stl的迭代器,可以簡單的看做是元素指標map::iterator it = ;
表示指向tempmap第乙個元素,你用 it->first 和 it->second,就能直接呼叫元素了。
5樓:網友
mapmap_;
提供乙個具有鍵值對(type1,type2)的容器,相關例項可以看看網上的例項demo。。。
c++: stl中的set是排序儲存還是hash?
6樓:網友
set和hash都是stl的資料結構來著,set用紅黑樹,hash用二叉樹。
set是按一定順序排好的。
7樓:網友
set用的是紅黑樹,也就是二叉查詢樹的結構,是按一定規則排好序的。。。
8樓:網友
set用的是紅黑樹, unordered_set是hash,後者查詢快,前者支援排序。
為什麼treeset使用紅黑樹而一些資料庫索引使用b樹和b+樹
9樓:匿名使用者
為什麼treeset使用紅黑樹而一些資料庫索引使用b樹和b+樹。
在c++ stl中,很多部分(目前包括set, multiset, map, multimap)應用了紅黑樹的變體(sgi stl中的紅黑樹有一些變化,這些修改提供了更好的效能,以及對set操作的支援)。紅黑樹是每個節點都帶有顏色屬性的二叉查詢樹,顏色或紅色或黑色。
訪問了stl的map中沒有的元素會出現什麼情況啊?
10樓:科比
會在map中新增乙個新的元素,鍵指為訪問時的下標。
木材為什麼用榫卯連線而不用釘連線
榫卯工藝是我國傳統傢俱工藝的靈魂,尤其是對於紅木傢俱來說。榫卯,凸出來的部分稱為 榫 凹進去的部分叫做 卯 利用榫卯實現連線。榫卯結構歷史悠久,早在7000多年前的河姆渡新石器時代,我們的祖先就已經開始使用榫卯了。受制於礦石開採和金屬冶煉技術,釘子是很奢侈的,榫卯工藝以其高精度高強度,並且成本低廉被...
為什麼用ip地址而不直接使用域名
在網際網路中bai 每個機器du裝置都會有 zhi唯一的識別符號,ip地址dao。但是記憶ip地址和專身份號碼類似也屬是一串長長的數字,十分不方便人們記憶。於是,出現了域名,來代替複雜的ip地址,方便我們快速訪問 所以,企業網上建站時,最先需要購買域名。而關於域名為什麼要付費使用,是因為域名統一由域...
為什麼用農民採礦,而不用或跟更多
剛出來的時候 基地的位置是設定好的 5個農民正好成一輪往返 如果一定要6個,沒什麼區別,取錢的速度一樣,但明顯浪費了一隻農民當然,還要說的是 有些人在頂著對方開礦的情況下,肯定會先塔,為了保護基地,先塔 基地會外建,需要6只農民才能往返,但取錢速度不變。不是刷分的吧 人家都沒說是什麼遊戲 你怎麼就知...