c++的remove函数
c++标准库中的remove函数,看上去好像是用来"remove"字符串里的特定字符,如:
string a="123";
remove(a,'1');
但是实际结果并不是“23”而是“233”。
因为remove的删除操作是基于移动元素,即用后面的元素覆盖前面的元素。如果想要实现删除的操作,应该结合erase函数。
原理是remove会返回最后一个删除元素的下一个迭代器的位置,因此正确做法如下:
a.erase(remove(a.begin(), a.end(), '1'), a.end());
在理解remove的原理之后,我们发现在一些场合下remove函数删除特定字符的效率并不高。比如在vector中,我们删除特定元素就免不了移动元素,因此用remove也无所谓了,但是在list中,移动元素完全是不必要的,因此c++的list中本身含有自身的remove成员函数。
参考博文:STL的remove函数和list的remove成员函数 - kinuxroot - 博客园 (cnblogs.com)
合集:
c++里的坑
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端