仅提供中文版本
在使用remove_if时发现此函数无法对容器内满足pred表达式的数据删除,remove_if将会使用列表内其他数据填充,而本身的大小不变,具体解释可以参考remove_if的用法,这种情况下需要搭配erase方法彻底删除.
1 | bool IsMoreThen(LinkList target){return target.count>=5;} |
原因remove_if方法是找出符合条件的元素,并使用erase删除返回的vector<_type_>::iterator 的值,并将元素跳转向下一个元素,此时由于元素指针自动跳转+1,会造成连续值删除出现漏删的情况,针对这种情况需要写一个方法重新计算即可。
1 | std::vector<LinkList> RemovePredList(std::vector<LinkList> lists){ |
Author: Broccoli
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles
2022-06-10
C++ 检测程序是否在运行
2021-07-27
C++ 没有找到接受const _Ty类型的左操作数的运算符
2020-06-14
C++ Primer & PrimerPlus Notes
2020-12-02
C++ Get all files in a folder and rename to Hex

2020-12-31
C++ Virtual Inheritance

2021-05-09
Use C++ for Revit Secondary Development