删除C++容器值相关方法是怎么样的
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这期内容当中小编将会给大家带来有关删除C++容器值相关方法是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在程序开发的过程中,C++编程语言中的容器里有会有
千家信息网最后更新 2025年01月21日删除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; } listc; // todo insert items c.remove_if(fun);
嗯,其实删除C++容器值的方式还是挺多的。
上述就是小编为大家分享的删除C++容器值相关方法是怎么样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
容器
C++
代码
迭代
方法
函数
面的
元素
内容
就是
时候
有用
过程
高手
分析
存储
绞尽脑汁
专业
中小
内容丰富
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全教育板报弊端
域域用户服务器管理员权限
数据库表怎么定义例子
肇庆信息软件开发咨询
佛山学软件开发好不好
曲靖云图软件开发有限公司
南宁市伟林互联网科技
大连网络技术公司电话
国家网络安全研究院杨晨
网络安全制定安全目标简介
网络安全与信息化委职责员会
数据库建表命令是什么
国家中小学网络安全教育
黑苹果能软件开发吗
软件开发过程与模型
广州百单网互联网科技有限公司
校园招聘软件开发面试问题
什么叫保护网络安全
MYSQL数据库技术学校
数据库中的标题是什么数据类型
乱世王者新开服务器
网站空间和服务器的区别
阿里云服务器应用的场景
网络安全下布局机会
腾讯云数据库活动
数据库 实型
服务器虚拟机配置学习
zlan串口服务器亮绿灯
计划排产软件开发
爱享互联网科技公司崔青青