关于std::remove_if

来源:互联网 发布:迅雷赚钱宝软件 编辑:程序博客网 时间:2024/05/21 09:42
    int _arr[] = {1,2,3,4,5,6,7};    std::vector<int> arr(_arr, _arr+7);    auto itr = std::remove_if(arr.begin(), arr.end(), [](int i)->bool{        if(i%2 == 0)            return true;        return false;    });    arr.erase(itr, arr.end());

用法如上,之所以最后要erase,见源码:

 template<class ForwardIterator, class UnaryPredicate>ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,                           UnaryPredicate p){    ForwardIterator result = first;    for (; first != last; ++first)        if (!p(*first)) {            *result++ = *first;        }    }    return result;}