Re: [問題] 請問C++的map用法

看板C_and_CPP作者時間16年前 (2009/12/03 01:24), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串3/3 (看更多)
※ 引述《robertshih (施抄)》之銘言: : ( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) : ( 未必需要依照此格式,文章條理清楚即可 ) : 遇到的問題: (題意請描述清楚) : 各位大大好 我知道map的用法 : 想請問一下如果我存了兩筆資料 : map['a']=1; : map['b']=2; : 那麼我有沒有辦法再已知1的情況下 找出對應的key是'a'呢? : 希望得到的正確結果: : input是1, 結果是'a' : 程式跑出來的錯誤結果: : 我使用了 find() : 但 find() 也只能用key是找到那一筆資料 : 我需要的是反向操作 : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : g++, Linux : 有問題的code: (請善用置底文標色功能) : 補充說明: : 我主要是參考這裡 : http://www.cplusplus.com/reference/stl/map/find/ : 請問有無"不是把整個map掃一次"的方法 : 謝謝 for( std::map<char,int>::iterator it = yourMap.begin(); it != yourMap.end(); ++it ) { if( (*it).second == 1 ) return (*it).first; } 一個簡單的方法, 這樣呢? 根據以下ledia板友的推文修改了一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.189.89.230

12/03 01:25, , 1F
存的東西多的話就會很慢
12/03 01:25, 1F

12/03 01:25, , 2F
然後應該是 if(second==1) return first; ? (示意 code)
12/03 01:25, 2F

12/03 01:26, , 3F
啊對, 沒看到他倒數第二句
12/03 01:26, 3F

12/03 01:33, , 4F
哈哈哈原來有bimap, 害我以前還自創template...
12/03 01:33, 4F

12/03 01:36, , 5F
我也是剛看到上篇推文才知道有bimap這好用的東西
12/03 01:36, 5F
※ 編輯: Mewra 來自: 59.189.89.230 (12/03 01:40)

12/03 02:13, , 6F
不過 bimap 看名字是很爽,用起來卻跟 map 很不一樣。
12/03 02:13, 6F

12/03 02:14, , 7F
不過用過 boost 的 multi_index 應該會很好上手。
12/03 02:14, 7F
文章代碼(AID): #1B5gAojY (C_and_CPP)
文章代碼(AID): #1B5gAojY (C_and_CPP)