问题:
有时想用反序去遍历map,但是不能用iter–。
解决方法:
stl有反向迭代器。
map<string,tlm_generic_payload*>::iterator iter0;
map<string,tlm_generic_payload*>::reverse_iterator iter;
for(iter0 = reorder_map.begin();iter0!=reorder_map.end();){
cout<<"reorder_map key:"<<iter0->first<<"value:"<<iter0->second<<endl;
++iter0;
for(iter = reorder_map.rbegin();iter!=reorder_map.rend();){
if(iter->first ==gp_req_tmp){
cout<<"reorder_map match key :"<<gp_req_tmp<<" value:"<<iter->second<<" resp addr:"<<(iter->second)->get_address()<<endl;
注意:1) map是push并不是按固定的顺序push,而是随机的。这对于用正向,反向迭代器寻找第一个出现的key,有可能不是期望的。
2) erase只能使用正向迭代器。反向迭代器可以用base函数转换:
reorder_map.erase((++iter).base())
1648

被折叠的 条评论
为什么被折叠?



