服务器之家

服务器之家 > 正文

stl容器set,map,vector之erase用法与返回值详细解析

时间:2020-12-31 16:00     来源/作者:C语言教程网

总结本人在工作中经验教训。

在使用 list、set 或 map遍历删除某些元素时可以这样使用:

正确使用方法1

复制代码 代码如下:

      std::list< int> List;
      std::list< int>::iterator itList;
      for( itList = List.begin(); itList != List.end(); )
      {
            if( WillDelete( *itList) )
            {
               itList = List.erase( itList);
            }
            else
               itList++;
      }


正确使用方法2

复制代码 代码如下:

    std::list< int> List;
      std::list< int>::iterator itList;
      for( itList = List.begin(); itList != List.end(); )
      {
            if( WillDelete( *itList) )
            {
               List.erase(itList++);
            }
            else
               itList++;
      }


正确使用方法3

复制代码 代码如下:

      std::list< int> List;
      std::list< int>::iterator it, next;
      for( it = List.begin(), next = it, next ++; it != List.end(); it = next, ++next)
      {
            if( WillDelete( *it) )
            {
               List.erase(it);
            }
      }


注:方法三更为巧妙,但需注意方法三是用前需要判断容器是否为空,否则迭代器会出问题。

 

我测试得出,set.erase 不返回迭代器,list返回。
vector  删除操作

复制代码 代码如下:


std::vector <PACK_PRINT>::iterator It ;
for(It=printItems.begin();It!=printItems.end();)
{
  //我是说这里怎么判断printItems printItems 里PACK_PRINT.bh =0

 

  if( It.bh ==0) //是这样吗?
  {//删除
       It=printItems.erase(It);
  }
  else
  {//不删除
       ++It;
  }
}

 

复制代码 代码如下:

std::vector <PACK_PRINT> printItems;
int i = 0;
while(i < printItems.size())
{

          if(printItems[i].bh == 0)  //这里比如我想把 printItems 时PACK_PRINT.bh =0 的删除如何写哟。另外这样删除有错吗?
          {//删除
                printItems.erase(printItems.begin() + i);
          }
          else
          {//不删除
                ++i;
          }
}
标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
电视剧《琉璃》全集在线观看 琉璃美人煞1-59集免费观看地址
电视剧《琉璃》全集在线观看 琉璃美人煞1-59集免费观看地址 2020-08-12
返回顶部