[STL] Container一問:value可排序的hash_map?

看板C_and_CPP作者 (=.=)時間15年前 (2010/08/07 11:33), 編輯推噓2(2010)
留言12則, 3人參與, 最新討論串1/3 (看更多)
請問有符合以下這些要求的container嗎? 1. 類似hash_map,有key與value的對應 2. 可以對value進行排序 我覺得有這樣的container應該蠻合理的,因為這是很常使用的功能 但網上搜了搜卻沒找到這樣的container :( 例子:把一篇文章中所有的字依字數多寡做排列 一個直觀的做法就是用hash_map存字與字數的對應 然後排序後印出 但,hash_map是不能依value做排序的 請問有適合這種要求的container嗎?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 216.239.45.4

08/07 12:37, , 1F
用multimap然後以字數作為key值如何?
08/07 12:37, 1F
用字數做key值的話,那就沒辦法讀一個字,然後直接ctr[word]++啦 這樣就已經失去用map這類資料結構的意義了

08/07 12:38, , 2F
印象中stl的關聯是容器都是sorted的,無法自己更改順序
08/07 12:38, 2F
就我的瞭解也是這樣,但我覺得這麼常用的一種資料結構,應該是有現成的容器 可以用吧…

08/07 12:39, , 3F
不然就是用vector搭配pair自己作一個
08/07 12:39, 3F
vector搭配pair還是有第一個回應中的問題 :(

08/07 14:05, , 4F
用hashmap跟map組合,hashmap存物件位址,map存物件
08/07 14:05, 4F
恕小弟眼拙,看不懂組合的意思,可以請sunneo再說清楚點嗎? 雖然 tinlans 大說的 multi_index 可以解決我的問題,但很好奇你說的組合是怎麼做的

08/07 14:32, , 5F
multi_index
08/07 14:32, 5F

08/07 14:37, , 6F
不在 STL 裡面,是 boost 的東西。
08/07 14:37, 6F
Multi_index looks great! Thanks

08/07 15:59, , 7F
就是用hashtable跟tree去存物件指標啊,修改counter時
08/07 15:59, 7F

08/07 16:00, , 8F
從tree取出唯一相同的物件 改完在放回去
08/07 16:00, 8F

08/07 16:01, , 9F
因此tree的equal的條件只能是指標相等 value相同的看你
08/07 16:01, 9F

08/07 16:01, , 10F
比如存成一個list,或者乾脆讓value相同以less看待
08/07 16:01, 10F
sunneo大,我還是沒有很懂你的意思,但我試著做以下的解讀,有錯請指正 你說"value相同的存成list或以less看待", 我以此判斷你的tree結構是以counter的value決定該counter在tree中的位置 如果是這樣,在找某個字所對應的字數時,必需走過整棵樹才能找到此對應 似乎沒有用到map的特性? (希望只是我沒看懂你的意思)

08/08 04:27, , 11F
要找相對字的字數 就直接從hashtable拿
08/08 04:27, 11F

08/08 04:27, , 12F
而需要排序時 以中序走過tree 這兩點沒衝突吧
08/08 04:27, 12F
※ 編輯: Aligu1009 來自: 216.239.45.4 (08/08 06:15)
文章代碼(AID): #1CNDGYeB (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CNDGYeB (C_and_CPP)