c++ 单独使用remove_if造成数据重复的问题
在使用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){ |
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.


