#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
template<class T>
struct GT
{
GT (const T& a) : m_a(a) {}
bool operator()(const T& left)
{
return left >= m_a;
}
T m_a;
};
int main()
{
list<int> iLst;
iLst.push_back(12);
iLst.push_back(178);
iLst.push_back(200);
list<int>::iterator iter =
find_if(iLst.begin(), iLst.end(), GT<int>(100));
if (iLst.end() != iter)
{
cout << "find" << endl;
cout << *iter << endl;
}
else
{
cout << "not find" << endl;
}
return 0;
}
#include <Windows.h>
#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <list>
#include <algorithm>
using namespace std;
//*********************************************************
// 函数
//*********************************************************
bool GreaterThan(int left, int right)
{
return left >= right;
}
typedef bool (*GreaterThanFuncPtrType)(int, int);
//*********************************************************
// 仿函数类
//*********************************************************
template<class T>
struct GT
{
bool operator()(const T& left, const T& right) const
{
return left >= right;
}
};
int main()
{
list<int> iLst;
iLst.push_back(10);
iLst.push_back(110);
iLst.push_back(120);
//-----------------------------------------------------
// 用函数指针调用
//-----------------------------------------------------
GreaterThanFuncPtrType pGreaterThan
= GreaterThan;
list<int>::iterator iter = iLst.begin();
for(; iter != iLst.end(); ++iter)
{
cout << pGreaterThan(*iter, 100) << endl;
}
//-----------------------------------------------------
// 用函数对象调用
//-----------------------------------------------------
GT<int> gt;
iter = iLst.begin();
for(; iter != iLst.end(); ++iter)
{
cout << gt(*iter, 100) << endl;
}
return 0;
}
原文地址:http://blog.csdn.net/hisinwang/article/details/45133147