千家信息网

删除C++容器值相关方法是怎么样的

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这期内容当中小编将会给大家带来有关删除C++容器值相关方法是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在程序开发的过程中,C++编程语言中的容器里有会有
千家信息网最后更新 2026年11月03日删除C++容器值相关方法是怎么样的

这期内容当中小编将会给大家带来有关删除C++容器值相关方法是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

在程序开发的过程中,C++编程语言中的容器里有会有很多值,有些是比较有用的,而有些是没用的。那么对于这些没有用的值我们应该如何进行删除呢?在这里我们将会为大家详细介绍删除C++容器值的相关方法。

C++的容器中一般都提供erase函数,此函数接收的参数一般有一个是一个迭代器:

如果删除C++容器值的话,我们可能一般都用过:

list c;  // todo insert items  for (list::iterator i = c.begin(); i!= c.end(); ++i)  {  if ((*i)>10)  {  // 如果有一个值大于10,删除之  c.erase(i);  break;  }  }

上述代码在删除一个元素的时候并没有问题。。。但是我们想删除所有大于10的值,于是:

list c;  // todo insert items  for (list::iterator i = c.begin(); i!= c.end(); ++i)  {  if ((*i)>10)  {  // 删除所有大于10的值  c.erase(i);  }  }

满怀希望的编译,运行。。。于是异常发生。。。啊。。。哦。。。

原来是删除迭代器i后,i所指的元素已经失效了,然后给i++,它已经不在存在了。。。于是绞尽脑汁,出笼了下面的删除C++容器值代码:

list c;  // todo insert items  list::iterator nextitr = c.begin();  for (list::iterator i = c.begin();;)  {  if(nextitr == c.end())  break;  ++nextitr;  if ((*i)>10)  {  // 如果有一个值大于10,删除之  c.erase(i);  }  i = nextitr;  }

上面的代码很容易理解,即在删除一个迭代器之前,把它的之后的迭代器先存储,然后在下次循环的时候利用之前存储的迭代器。

OK,我们看到上面这段代码可以工作了,行为似乎也还正确,只是。。。代码似乎多了点。我想代码能够少点就好了,逻辑也不要那么麻烦。那么我们看下面的代码(转载自Effective STL)。

list c;  // todo insert items  for (list::iterator i = c.begin(); i!= c.end();)  {  if ((*i)>10)  {  // 如果有一个值大于10,删除之  c.erase(i++);  }  else  i++;  }

嗯。。。高手就是高手(我以前根本没有在意过++i和i++在使用的过程中能有这么大的区别)好了,***再提供一个版本,利用list的remove_if函数。

bool fun(int i)  {  if(i>10)  return true;  else  return false;  }  list c;  // todo insert items  c.remove_if(fun);

嗯,其实删除C++容器值的方式还是挺多的。

上述就是小编为大家分享的删除C++容器值相关方法是怎么样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

容器 C++ 代码 迭代 方法 函数 面的 元素 内容 就是 时候 有用 过程 高手 分析 存储 绞尽脑汁 专业 中小 内容丰富 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 互联网巨头反垄断金融科技 贷财互联网科技 狮子座互联网科技培训 互联网科技有限公司 翻译 美国互联网前沿科技 镁科技互联网资讯平台 济南和联互联网科技有限公司 恒银科技与互联网金融 河南猎农互联网科技有限公司 花神(南京)互联网科技有限公司 广西互联网科技孵化中心 浙南科技城互联网大厦建设工程 伍佰万互联网科技怎么赚钱 互联网风格科技公司名称 宁波跨境商互联网科技有限公司 互联网科技企业商标注意事项 上海万顺科技互联网有限公司招聘 银川新华互联网科技学校原画 优雇互联网科技有限公司 互联网科技海报 互联网科技集团 期待互联网科技 互联网科技公司电话 长亮科技互联网金融 科技与互联网的利与弊 佳云科技和互联网广告 深圳无忧互联网科技 南京一网一红互联网科技有限公司 上海同邻互联网科技有限公司规模
0