EE_DSnP 板


LINE

typedef map<const string, CmdExec*> CmdMap; (Line 111 @ cmdParser.h) 只是在說CmdMap是某個map換名字 以下正文 (這篇應該不會很長) ---------------------------------------------------- 只想提一下如果想拜訪每個map裡的元素要怎麼做 以前用vector(或陣列)的時候 我們常常寫 vector<int> array; for(size_t i=0; i<array.size(); ++i) { //somehow(array[i]); } 之類的東西嘛 可是map的元素根本沒有流水號索引 雖然有operator[] 可是意義跟我們所熟悉的差很多 顯然不能用來traverse ---------------------------------------------------- C++提供的STL Container 沒記錯的話全都有一個叫做iterator的內部類別 這個iterator可以取代稍早我寫的size_t i的功能 所以我們這樣寫 map<int,string> mp1; for(map<int,string>::iterator it=mp1.begin(); it!=mp1.end(); ++it){ //somehow(*it); } 然後這裡有幾個note 1. begin和end都是map提供的函數 看名字就知道在幹嘛 詳情請洽你找到的Tutorial 2. it實作了pre- and post-increase(++), dereference(*) 3. dereference的傳回值是pair 裡面放的東西與map對應 以上面的例子來講 Class(*it) == pair<const int, string>; 4. 欲取得pair內的東西 可以直接存取first和second這兩個成員變數 ------------------------------------------------- Last but not least, 如果宣告的map是const 如 const map<int,string> mp2; 那我們不能取得他的iterator 因為我們可能會透過iterator修改map的內容 (所以 修改 *it 是會動到 mp1 的內容的喔) 但是我們還是應該要可以traverse這個map 所以辦法是 for(map<int,string>::const_iterator it=mp2.begin(); it!=mp2.end(); ++it){ //somehow_const(*it); } ------------------------------------------------- 後記: 我覺得我看的那份Tutorial http://www.cplusplus.com/reference iterator那邊講得不太清楚 所以才特別來寫這篇 如果老師覺得我透露太多的話就d掉吧... --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.248.9.249
1F:推 ric2k1:不會呀! 一些觀念我們接下來也會教到! 10/27 02:40
2F:推 TommyKSHS:我記得 HW3 有個 function 裡面就是要用 const_iterator 10/27 11:24
3F:→ TommyKSHS:以前寫的時候被 compiler 吐嘈這個很久 XD 10/27 11:25
4F:推 XDucka:我看的tutorial根本沒有解釋const_iterator Orz 10/27 14:59
5F:推 steve1012:哇哩 要注意const_iterator 和const iterator不一樣喔 10/27 16:14
6F:→ steve1012:const_iterator應該是像const method 一樣所以才能存取 10/27 16:15
7F:→ steve1012:const object 10/27 16:15
8F:推 boiq:樓上那個我昨天查抄久才看到解法哇咧!! 10/27 16:54
9F:→ boiq:而且Compile還噴四五行看不太懂的東西,可怕! 10/27 16:55
10F:推 XDucka:所以不只是 const map<key,value>要用const_iterator 10/27 23:44
11F:→ XDucka:連 map<const key , value> 這樣也要用const_iterator? 10/27 23:45
12F:→ djshen:const key的意義是..? 10/28 00:18
13F:推 ric2k1:樓上,不用哦! 只有 const map 才要 const_iterator 10/28 00:19
14F:推 steve1012:key好像已經是const了 10/28 00:46
15F:→ ypf791:但const func似乎會默認所有data member為const...咕嘿嘿(? 10/28 00:46
16F:推 taldehyde:天哪 豈不是要拜一下m(_ _)m 這篇瞬間解決我的問題 10/28 17:19
17F:推 XDucka:原來是const function把map const了.... 10/28 19:28
18F:推 jasonshan:const解說非常實用 感謝 10/31 17:29







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP