首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个c++ 中地图无法删除的有关问题

2012-10-23 
请教一个c++ 中map无法删除的问题请求高手指教,map中erase已经删除的项,在跳出if语句后竟然还存在,不晓得

请教一个c++ 中map无法删除的问题
请求高手指教,map中erase已经删除的项,在跳出if语句后竟然还存在,不晓得哪里出了问题。
代码是验证map中是否存在某项,如果存在,其值-1,如果其值变为了零,删除掉对应项。

代码如下:
if(e_viewermap.count(make_pair(ch,en)) > 0){
e_viewermap[make_pair(ch,en)]--;
if(e_viewermap[make_pair(ch,en)] == 0){
Viewermap::iterator itm;
itm=e_viewermap.find(make_pair(ch,en));
e_viewermap.erase(itm);
}
if(e_viewermap[make_pair(ch,en)] < 0){
cout<<"*** error: viewer_map less than 0 *** %s\n"<<endl;
system("pause");
exit(1);
}
} else {
cout<<"*** error: not exist in viewer_map*** %s\n"<<endl;
system("pause");
exit(1);
}

代码中Viewermap是 typedef map<pair<PChannel, ENCODING>, int> Viewermap 类型。 程序调试的时候单步执行发现,确实删除掉了需要删除的项,但是只要一跳出这个(最外层的)if语句,已经删除掉的项竟然还在。。。。。。请问这是什么原因呢?

谢谢!~

[解决办法]
容器传入的引用?

热点排行
Bad Request.