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灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP