c++ 适配器

#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e5+10;
vector<int> filter(const vector<int> &vec,int val,less<int> &lt) {
    vector<int> nvec;
    vector<int> :: const_iterator iter=vec.begin();
    while((iter=find_if(iter,vec.end(),bind2nd(less<int>(),val)))!=vec.end()) {
        nvec.push_back(*iter);
        iter++;
    }
    return nvec;
}
template<typename InputIterator ,typename OutputIterator,typename ElemType,typename Comp>
OutputIterator filter(InputIterator first,InputIterator last,OutputIterator at,const ElemType val,Comp pre) {
    while((first=find_if(first,last,bind2nd(pre,val)))!=last) {
        cout<<*first<<endl;
        *at++=*first++;
    }
    return at;
}
template<typename InputIterator,typename OutputIterator,typename ElemType>
OutputIterator sub_vec(InputIterator first,InputIterator last,ElemType val,OutputIterator at) {
    InputIterator first1=first,last1=last;
    for(;first!=last;first++) {
        *at++=*first++;
    }
    sort(first1,last1);
    first=find_if(first1,last1,bind2nd(less<int>(),val));
    at->erase(first,last1);
    return at;
}
priority_queue <int,vector<int>,greater<int> > q;

int main() {
    const int elem_size=5;
    int ia[elem_size]={1,3,4,56,7};
    vector<int> res(ia,ia+elem_size);
    vector<int> ans;
    filter(res.begin(),res.end(),back_inserter(ans),20,greater<int>());
    for(int i=0;i<ans.size();i++) {
        printf("%d\n",ans[i]);
    }
}
posted @ 2015-07-04 14:25  acvc  阅读(267)  评论(0编辑  收藏  举报