gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章stl容器set,map,vector之erase用法与返回值详细解析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

在使用 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;
          }
}

最后此篇关于stl容器set,map,vector之erase用法与返回值详细解析的文章就讲到这里了,如果你想了解更多关于stl容器set,map,vector之erase用法与返回值详细解析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com