函数适配器
来源:互联网 发布:php清除cdn缓存 编辑:程序博客网 时间:2024/05/29 13:55
绑定器:
作用是将二元函数的一个参数绑定到某一特定的值上,将二元函数对象转化为一元函数对象。
如:int * where=find_if(&array1[0],&array1[100],bind2nd(greater<int>(),200));
相似的,函数适配器bind1st可以用来绑定二元函数对象的第一个参数。
作用是将二元函数的一个参数绑定到某一特定的值上,将二元函数对象转化为一元函数对象。
如:int * where=find_if(&array1[0],&array1[100],bind2nd(greater<int>(),200));
相似的,函数适配器bind1st可以用来绑定二元函数对象的第一个参数。
取反器:
取反器是一种用来对判决函数对象的结果取反的函数知配器,有两种not1和not2。
not1是对一元函数对象取反,not2是对二元函数取反。即如果传给函数对象的只有一个参数,则要用not1。
如:int * where=find_if(&array1[0],&array1[100],not1(bind2nd(greater<int>(),200)));
因为array1作为inputiterator,每次只传一个参数到函数对象,所以用not1。
取反器是一种用来对判决函数对象的结果取反的函数知配器,有两种not1和not2。
not1是对一元函数对象取反,not2是对二元函数取反。即如果传给函数对象的只有一个参数,则要用not1。
如:int * where=find_if(&array1[0],&array1[100],not1(bind2nd(greater<int>(),200)));
因为array1作为inputiterator,每次只传一个参数到函数对象,所以用not1。
顺便说一下一种很好的传参判断方法:写一个类,重载()算符,并接收传进来的参数,判断后再返回真假。
写一个例子:
class U:public binary_function<U,U,bool>
{
public:
int id;
bool operator()(const U& x,const U& y)const
{
return x.id>=y.id;
}
};
int main()
{
vector<U> vector1(100);
//对vector1容器每个成员的id赋值
sort(vector1.begin(),vector1.end),not2(U()));
//这个排序就完成了我们的目的,注意binary_function<U,U,bool> and unary_function<U,bool>
//一元函数和二元函数,对函数个数要求不同,在泛型算法中一定要分清各种函数对象对参数的不同要求
}
写一个例子:
class U:public binary_function<U,U,bool>
{
public:
int id;
bool operator()(const U& x,const U& y)const
{
return x.id>=y.id;
}
};
int main()
{
vector<U> vector1(100);
//对vector1容器每个成员的id赋值
sort(vector1.begin(),vector1.end),not2(U()));
//这个排序就完成了我们的目的,注意binary_function<U,U,bool> and unary_function<U,bool>
//一元函数和二元函数,对函数个数要求不同,在泛型算法中一定要分清各种函数对象对参数的不同要求
}
函数指针适配器:
看代码:set<string,less<string>> set1;set<string,greater<string>> set2;
这里很可能造成代码重复,解决方法:set<string,pointer_to_binary_finction<const string&,const string&,bool>>
再利用ptr_fun指定一个一元或二元函数,转换为一个一元或二元函数对象。
- 函数适配器
- 函数适配器
- 函数适配器
- 函数适配器
- 函数适配器
- 函数适配器
- 函数适配器
- 函数适配器
- 函数适配器
- 仿函数 函数适配器
- 常规函数适配器,成员函数适配器
- 函数对象及适配器
- 成员函数线程适配器
- STL 函数适配器
- C++函数适配器
- STL 函数适配器
- 【STL】函数适配器
- 函数适配器bind2nd
- B树 B+树
- 第二人生的源码分析(八十二)创建UI的浮动窗口(floater)
- 游戏程序员谈GameAI
- C++知识的补充与说明
- 使用startup.bat运行tomcat提示“Windows找不到'-Djava.endorsed.dirs'
- 函数适配器
- VirtualBox 1.6.2 (released 2008-06-06)
- STL中部分算法的英文说明
- 上网记——ARP欺骗与反ARP欺骗
- 上网记——ARP欺骗与反ARP欺骗
- MapObjects打包问题
- C#中数字日期转中文日期
- MODx CMS 中文处理异常(乱码)的解决
- Question(问题)