C_and_CPP 板


LINE

原谅我不用推文 用回文 因为真的很赶时间 怕用推文的大家看不到 请问一怎麽修改 map 里面的key和value 我主要是想把 map 阵列中的两个位置的内容互换 key和 value 都要互换 无法使用 [] 因为系统会再insert 也无法使用 iterator 因为那只是指标 而且又是const 星期一就要生成果 ~~~阿~~~没时间了 不好意思 麻烦大家了 谢谢 ※ 引述《yhn0tgb60 (呦厚厚)》之铭言: : 我刚刚试了一个方法 : map <DWORD, Node>::iterator buf; : buf=closelist.begin(); : 用 buf来进行运算 : 但是假如我想取的是map第5个阵列值 : 我用 buf=closelist.begin()+5; : complie不会过 : 难道我要 buf++; 5次吗??? : 请问有没有更有效率的办法 : find() 是搜寻key 但我现在要用的是取出阵列的某个位置 : 这有点不符合我的需求 : 麻烦大家了 谢谢 : ※ 引述《yhn0tgb60 (呦厚厚)》之铭言: : : 我宣告了一个 : : STL的map 里面的资料是摆一个struct : : 而我每加一笔资料到map里时 : : 会用minHeap排序 依照struct 里面的某个float 的大小排序 : : 可是当我在比较map中的某两个位置的 struct 中的某个float 的大小时 : : 系统却会常常会自动在我的map阵列的最前面加入两个或一个都是 0 的资料 : : 而且之後也不会自动删除 : : 以下是我的部份程式码 : : struct Node : : { : : int verID1; : : int verID2; : : float curCost; : : float heuristic; : : Node *parent; : : }; : : inline DWORD GetKey( int verID1, int verID2 ) : : { : : return ( MAKELONG( verID1, verID2 )); : : } : : inline int GetHeapParent( int i ) : : { : : return ((i+1)/2-1); : : } : : map <DWORD, Node> closelist; : : void Astar::InsertMinHeap( Node n) : : { : : closelist.insert( map< DWORD, Node>:: : : value_type( GetKey( n.verID1 ,n.verID2 ), n)); : : int curPose=closelist.size()-1; : : while(TRUE) : : { : : int i=GetHeapParent( curPose ); : : if(i==-1) : : break; : : if((closelist[curPose].curCost+closelist[curPose].heuristic)< : : (closelist[i].curCost+closelist[i].heuristic)) : : { : : Node buf=closelist[curPose]; : : closelist[curPose]=closelist[i]; : : closelist[i]=buf; : : curPose=i; : : } : : else : : break; : : } : : } : : 就是下面这两行 : : "" if((closelist[curPose].curCost+closelist[curPose].heuristic)< : : (closelist[i].curCost+closelist[i].heuristic)) "" : : 常常会都自动再帮我加两个或一个 资料都为0的map 而且加在最前面 : : 希望大家可以看的懂 : : 麻烦大家了 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.248.163.42
1F:推 zerodevil:key和value都换 = 没换 08/23 16:37
2F:→ yhn0tgb60:ㄟ 什麽意思阿 我的意思就是要改变阵列中的位置 08/23 16:45
3F:→ yhn0tgb60:为何会等於没换 08/23 16:46
4F:→ tinlans:map 不是阵列,它内部是 tree 结构。 08/23 16:54
5F:→ tinlans:它是 unordered 特性,所以也没有位置互换这回事。 08/23 16:56
6F:→ tinlans:把元素位置的概念套用在 map 上一开始就是一个错误。 08/23 16:57
7F:→ tinlans:如果真的需要用到位置,你应该自己做 associative array 08/23 17:00
8F:→ tinlans:,loki lib 里面有提供一份实作,你会用的话。 08/23 17:01
9F:→ tinlans:同时想要 map 搜寻速度和 vector 的随机存取性,可能就需 08/23 17:01
10F:→ tinlans:要使用 Boost.MultiIndex,但前提是你会安装 Boost。 08/23 17:01
11F:→ yhn0tgb60:搞到现在 我也觉得我的观念好像一开始就错了XD 唉~~ 08/23 17:02
12F:→ yhn0tgb60:谢谢了 08/23 17:02







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

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

TOP