看板 C_and_CPP 關於我們 聯絡資訊
請問有符合以下這些要求的container嗎? 1. 類似hash_map,有key與value的對應 2. 可以對value進行排序 我覺得有這樣的container應該蠻合理的,因為這是很常使用的功能 但網上搜了搜卻沒找到這樣的container :( 例子:把一篇文章中所有的字依字數多寡做排列 一個直觀的做法就是用hash_map存字與字數的對應 然後排序後印出 但,hash_map是不能依value做排序的 請問有適合這種要求的container嗎?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 216.239.45.4
dk3208:用multimap然後以字數作為key值如何? 08/07 12:37
用字數做key值的話,那就沒辦法讀一個字,然後直接ctr[word]++啦 這樣就已經失去用map這類資料結構的意義了
dk3208:印象中stl的關聯是容器都是sorted的,無法自己更改順序 08/07 12:38
就我的瞭解也是這樣,但我覺得這麼常用的一種資料結構,應該是有現成的容器 可以用吧…
dk3208:不然就是用vector搭配pair自己作一個 08/07 12:39
vector搭配pair還是有第一個回應中的問題 :(
sunneo:用hashmap跟map組合,hashmap存物件位址,map存物件 08/07 14:05
恕小弟眼拙,看不懂組合的意思,可以請sunneo再說清楚點嗎? 雖然 tinlans 大說的 multi_index 可以解決我的問題,但很好奇你說的組合是怎麼做的
tinlans:multi_index 08/07 14:32
tinlans:不在 STL 裡面,是 boost 的東西。 08/07 14:37
Multi_index looks great! Thanks
sunneo:就是用hashtable跟tree去存物件指標啊,修改counter時 08/07 15:59
sunneo:從tree取出唯一相同的物件 改完在放回去 08/07 16:00
sunneo:因此tree的equal的條件只能是指標相等 value相同的看你 08/07 16:01
sunneo:比如存成一個list,或者乾脆讓value相同以less看待 08/07 16:01
sunneo大,我還是沒有很懂你的意思,但我試著做以下的解讀,有錯請指正 你說"value相同的存成list或以less看待", 我以此判斷你的tree結構是以counter的value決定該counter在tree中的位置 如果是這樣,在找某個字所對應的字數時,必需走過整棵樹才能找到此對應 似乎沒有用到map的特性? (希望只是我沒看懂你的意思)
sunneo:要找相對字的字數 就直接從hashtable拿 08/08 04:27
sunneo:而需要排序時 以中序走過tree 這兩點沒衝突吧 08/08 04:27
※ 編輯: Aligu1009 來自: 216.239.45.4 (08/08 06:15)