精易论坛

标题: C++erase求助 [打印本页]

作者: 陽陽陽    时间: 2023-1-10 14:20
标题: C++erase求助
x.erase(remove(x.begin(),x.end(),' '), x.end());
清除指定文本

remove() 算法会通过左移其他元素来覆盖它们
内存大小不变
有几个被移动的,最后会从头开始补上
mydogsnameisme is



这个都理解,但是,我唯一不明白的是为什么erase就可以把它最后那个多余的给去掉
按理说它占用的内存应该是相等的啊,都是x.end()
可是为什么erase之后就没了。这个原理是什么?
重点:明明都是x.end(),为啥第一个和第二个不一样的长度,能把多余的清除掉(描述不清晰,大体知道啥意思就好)?


作者: 元老    时间: 2023-1-10 14:20
陽陽陽 发表于 2023-1-10 14:33
那erase为啥会改变它的内存大小?
明明都是x.end,假如remove不改变内存大小的话,为啥erase就可以删除  ...

要不你看看前后两个迭代器是否相同?隐藏不等于未知
作者: 元老    时间: 2023-1-10 14:26
用的啥破字体放代码一会美国一会英国,哪家机场
作者: 元老    时间: 2023-1-10 14:29
remove只是把匹配项丢末尾,不在vector中表现出来,而不是彻底删除,erase才是完全删除
作者: 陽陽陽    时间: 2023-1-10 14:30
元老 发表于 2023-1-10 14:26
用的啥破字体放代码一会美国一会英国,哪家机场

就是自己做的笔记。
我学校电脑可以直接打开125.confly.eu.org
但是这个大电脑就不行,要开AX插件

机场嘛。。
精易科技·易语言精易论坛·小黑屋直达国际机场,3号楼B出发大厅
Jingyi Technology · Easy Language Jingyi Forum · Xiaoheiwu direct access to the international airport, Departure Hall B, Building 3

给我来个2分钟我体验一下尊贵的用户组
作者: 陽陽陽    时间: 2023-1-10 14:33
元老 发表于 2023-1-10 14:29
remove只是把匹配项丢末尾,不在vector中表现出来,而不是彻底删除,erase才是完全删除 ...

那erase为啥会改变它的内存大小?
明明都是x.end,假如remove不改变内存大小的话,为啥erase就可以删除 未知的大小?





欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4