#include <algorithm>
#include <vector>
#include <iostream>
#include <functional>
using namespace std;
int MaxThan0(int a)
{
if(a>0)
return true;
else
return false;
}
class maxThan : public unary_function<int, bool>
{
public:
result_type operator()(argument_type &value)
{
return value > 1;
}
};
template< typename T>
class MaxTHAN : public unary_function<T, bool>
{
public:
bool operator()(T &value)// bool 改为 result_type 会报错,暂时不知道为什么
{
return value > 2;
}
};
void printVector(vector<int> vec)
{
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<" ";
cout<<endl;
cout<<endl;
}
int main()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
vector<int>::iterator it;
it = remove_if(v1.begin(),v1.end(),MaxThan0); /*not delete just find the first iterator match "MaxThan"*/
cout<<*it<<endl; // 1
printVector(v1); // 1 2 3
it = remove_if(v1.begin(),v1.end(),maxThan());
cout<<*it<<endl;// 2
printVector(v1);// 1 2 3
it = remove_if(v1.begin(),v1.end(),MaxTHAN<int>());
cout<<*it<<endl;// 3
printVector(v1); // 1 2 3
return 0;
}
STL学习(七)remove_if 学习
最新推荐文章于 2022-07-05 12:45:27 发布