函数对象适配器之ptr_fun的使用示例


 1 //============================================================================
2 // Name : CopyInts4.cpp
3 // Author : motein
4 // Version :
5 // Copyright : Your copyright notice
6 // Description : Hello World in C++, Ansi-style
7 //============================================================================
8
9 #include <iostream>
10 #include <algorithm>
11 #include <vector>
12 using namespace std;
13
14 int u_func(int a)
15 {
16 int ret = a;
17 return ret;
18 }
19
20 int b_func(int a,int b)
21 {
22 return a+b;
23 }
24
25 void call()
26 {
27 pointer_to_unary_function<int,int> uf(u_func);
28 cout << uf(100) << endl;
29
30 pointer_to_binary_function<int,int,int> bf(b_func);
31 cout << bf(111,222) << endl;
32
33 cout << ptr_fun(u_func)(100) << endl;
34 cout << ptr_fun(b_func)(111,222) << endl;
35
36 }
37
38 int main()
39 {
40 call();
41 return 0;
42 }

函数对象适配器之ptr_fun的使用示例

时间: 2024-10-10 01:24:04

函数对象适配器之ptr_fun的使用示例的相关文章

6 C++ Boost 函数对象

6 C++ Boost 函数对象 目录: 关于bind bind2nd程序 bind与bind2nd,效果一样 bind1st 减法 bind1st 与bind 做减法 bind2nd调用仿函数 bind 不需要ptr_fun适配 std:bind2nd 与 boost:bind 当参数大于2个,std::bind已经没办法了,boost::bind限10个 bind_api[图] bind用于函数 以及 函数指针 bind用于函数对象 bind用于函数对象,(用引用避免函数对象的拷贝) bin

C++ STL 基础及应用(7) 函数对象(仿函数)

把函数作为对象是程序设计的新思维.STL 通过重载类中的 operator() 函数实现函数对象功能,不但可以对容器中的数据进行各种各样的操作,而且能够维护自己的状态.因此,与标准 C 库函数相比,函数对象更为通用. 本章将介绍函数指针的使用.函数对象的定义.引入目的.使用方法,C++98 标准和C++11标准下 STL 内置函数对象的详细介绍.适配器类的使用.包括 bind1st bind2nd not1 not2 mem_fun mem_fun_ref ptr_fun bind ref cr

仿函数(函数对象)

本文乃作者学习<C++标准程序库>的学习笔记,首先介绍了仿函数(函数对象)和函数适配器(配接器)的概念,然后列出STL中所有的仿函数,以及函数适配器,并摘录了几个例子演示仿函数和函数适配器的用法,最后讨论了仿函数的组合,以及实现方法. 1.仿函数是什么东西? <C++标准程序库>里对仿函数的解释是:仿函数是泛型编程强大威力和纯粹抽象概念的又一例证.你可以说,任何东西,只要其行为像函数,它就是一个函数.因此如果你定义了一个对象,行为像函数,它就可以被当做函数来用. 那么,什么才算具备

Android适配器之DataModifyHelper数据操作类的封装

编写适配器代码时常常被以下几个问题所困扰: 1.业务层和适配器中对同一组数据进行维护,难以管理 2.在业务层针对数据进行修改后必须通知适配器更新,否则提示The content of the adapter has changed but ListView did not receive anotification 3.业务层修改数据时充斥大量的非空&数据标准化等冗余代码 针对前两个问题,可以将数据交由适配器去管理,业务层对数据的增删改查均通过适配器进行处理,这样仅需要维护好adapter中的数

boost库在工作(15)绑定器与函数对象之三

前面已经可以优美地解决两个参数的函数给算法for_each调用了,但是又会遇到这样的一种情况,当需要三个参数或者三个以上的参数给算法for_each调用呢?从STL里的绑定器bind1st,显然是不行了,因为它最多只支持两个参数,那还有什么办法呢?这时就需要使用boost库里强大的绑定器bind了.它不仅适用的情况比STL库里的多,还更加方便,更加人性化.下面就来看看怎么样绑定三个参数的类成员函数的例子,如下: [cpp] view plaincopy //调用类的成员函数,但参数两个以上. /

C++ 函数对象

1.考虑下面的需求,从集合中找到一个与当前Student相等的学生,如下:int main(int argc, char* argv[]){ Student s1(20,"Andy"); Student s2(23,"Bill"); Student s3(28,"Caroline"); Student s4(27,"David"); Student s5(21,"Eric"); vector<Stud

js中的函数对象

JavaScript三种定义函数方法: {}表示函数体1.第一种是使用function语句定义函数 function func() { } 2.第二种是使用Function()构造函数来定义函数(不常用) var 函数名 = new Function("参数1","参数2","参数3"--"函数体"); var sum = new Function("x","y","var z

JavaScript作用域、上下文环境、函数对象的定义与调用、匿名函数的定义与调用、闭包

提到闭包总给人很高深的感觉,网上的例子也数不胜数.但是我发现相当一部分并不容易理解.根据我的观察,是因为这些例子把标题中提到的概念糅杂在了一起,往往越看越糊涂.所以我希望化整为零,拆成简单例子来解释. 1.先看作用域: JavaScript作用域只有两种--全局作用域和函数内作用域,没有代码块作用域.示例: function loop(){ for(var i=0;i<5;i++){ //doSomething; } alert(i); } loop(); //执行函数结果为5. 尽管变量i已经

python基础——函数对象和闭包

关于函数对象和闭包 闭包(closure)是函数式编程的重要的语法结构.不同的语言实现闭包的方式不同.Python以函数对象为基础,为闭包这一语法结构提供支持的 (我们在特殊方法与多范式中,已经多次看到Python使用对象来实现一些特殊的语法).Python一切皆对象,函数这一语法结构也是一个对象.在函数对象中,我们像使用一个普通对象一样使用函数对象,比如更改函数对象的名字,或者将函数对象作为参数进行传递. 一.函数对象: 1.函数可以当参数传递 示例: #把函数当成参数传递 def foo()