C++中remove_if函数使用详解:如何彻底删除容器内符合条件的数据
使用 remove_if 时发现此函数不能对容器内满足 pred 表达式的数据进行删除,remove_if 会用列表内其他数据来填充,而其本身的大小保持不变。具体的解释可参考 remove_if 的用法。在这种情况下,需要搭配 erase 方法才能彻底删除。

判断是否大于(LinkList target):如果 target 的 count 大于等于 5,则返回 true;否则返回 false。
使用 std::remove_if 函数从 list 的起始位置(list.begin())到结束位置(list.end())进行遍历,找到满足 IsMoreThen 条件的元素并删除,然后使用 list.erase 函数删除这些满足条件的元素。
原因
remove_if 方法会找出符合条件的元素,然后使用 erase 删除返回的 vector::iterator 的值,同时将元素跳转向下一个元素。因为元素指针会自动跳转加 1,所以会导致连续值删除时出现漏删的情况。针对这种情况,需要编写一个方法来重新计算。
std::vector RemovePredList(std::vector lists){
std::vector使用迭代器 iter 开始遍历 lists 容器,iter 指向 lists 的起始位置。
while (iter!=lists.end()){
if(iter->count>=5)
iter = lists.erase(iter);
else
iter++;
}
return lists;
}