删除C++容器值相关方法是怎么样的
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这期内容当中小编将会给大家带来有关删除C++容器值相关方法是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在程序开发的过程中,C++编程语言中的容器里有会有
千家信息网最后更新 2025年11月14日删除C++容器值相关方法是怎么样的
这期内容当中小编将会给大家带来有关删除C++容器值相关方法是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
在程序开发的过程中,C++编程语言中的容器里有会有很多值,有些是比较有用的,而有些是没用的。那么对于这些没有用的值我们应该如何进行删除呢?在这里我们将会为大家详细介绍删除C++容器值的相关方法。
C++的容器中一般都提供erase函数,此函数接收的参数一般有一个是一个迭代器:
如果删除C++容器值的话,我们可能一般都用过:
listc; // todo insert items for (list ::iterator i = c.begin(); i!= c.end(); ++i) { if ((*i)>10) { // 如果有一个值大于10,删除之 c.erase(i); break; } }
上述代码在删除一个元素的时候并没有问题。。。但是我们想删除所有大于10的值,于是:
listc; // todo insert items for (list ::iterator i = c.begin(); i!= c.end(); ++i) { if ((*i)>10) { // 删除所有大于10的值 c.erase(i); } }
满怀希望的编译,运行。。。于是异常发生。。。啊。。。哦。。。
原来是删除迭代器i后,i所指的元素已经失效了,然后给i++,它已经不在存在了。。。于是绞尽脑汁,出笼了下面的删除C++容器值代码:
listc; // 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)。
listc; // 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安全错误
数据库的锁怎样保障安全
在关系数据库中表间的关系有什么
在哪找数据库的表设计器
大话2志在四方服务器
如何导出淘宝订单数据库
组态王如何建立两个数据库文件
剑网三怎么看服务器延迟
聚会网络安全
改数据库密码
莆田直播软件开发源码
机房服务器辐射安全距离
公主岭云服务器试用价格
数据库表空间需要多大
软件开发是啥意思呀
安徽多功能软件开发厂家报价
软件开发工期和软件测试工期
服务器imana管理软件
软件开发行业的成本核算
现存的网络安全问题
mysql数据库怎样控制事务
一台服务器可以有啥收入
sql查看数据库名称
数据库和多媒体的未来发展状况
串口联网服务器军品级
网络安全风险挑战
国泰安数据库基金数据库说明
支持国密的数据库
国税2011年软件开发
软件开发周期一般多久
软件开发销售征税
阿里云服务器内存耗尽