手机
当前位置:查字典教程网 >编程开发 >C语言 >c++ map,mutimap删除问题分析
c++ map,mutimap删除问题分析
摘要:这样删除会导致程序内存覆盖等一系列不可预知的bug复制代码代码如下:map::iteratoriter;for(iter=mm.begin(...

这样删除会导致程序内存覆盖等一系列不可预知的bug

复制代码 代码如下:

map<string, string>::iterator iter;

for ( iter = mm.begin();iter != mm.end(); iter ++ )

{

if ( iter->second == something )

{

mm.erase( iter );

}

}

原因:当erase掉iter后,继续执行iter++,这个时候就乱套了

正确方法:

复制代码 代码如下:

for (iter = mm.begin();iter != mm.end();)

{

if ( iter->second == something )

{

mm.erase( iter++ );

}

else

{

iter++; // Use Pre Increment for efficiency.

}

}

可能有人不理解mm.erase(iter++)

其实和这个是一样的

复制代码 代码如下:

for (iter = mm.begin();iter != mm.end();)

{

if ( iter->second == something )

{

map<string, string>::iterator iter_erase;

iter_erase = iter++ //先保存后++再删除

mm.erase( iter_erase );

}

else

{

iter++; // Use Pre Increment for efficiency.

}

}

【c++ map,mutimap删除问题分析】相关文章:

shared_ptr线程安全性全面分析

VC6.0常见编译错误提示附解决方法

基于Protobuf C++ serialize到char*的实现方法分析

CFileDialog设置多选的问题解决

使用map实现单词转换的实例分析

二叉树遍历 非递归 C++实现代码

C++ sizeof 实例解析

c++中inline的用法分析

c 调用python出现异常的原因分析

二维指针动态分配内存连续问题深入分析

精品推荐
分类导航