ptr_fun
转自:http://www.cplusplus.com/reference/std/functional/ptr_fun/
template <class Arg, class Result>
pointer_to_unary_function<Arg,Result> ptr_fun (Result (*f)(Arg)); template <class Arg1, class Arg2, class Result>
pointer_to_binary_function<Arg1,Arg2,Result> ptr_fun (Result (*f)(Arg1,Arg2));
Returns a function object that encapsulates function f.
Function objects are objects whose class defines member function operator(). This member function allows the object to be used with the same syntax as a regular function call. Several standard algorithms and adaptors are designed to be used with function objects.
It is defined with the same behavior as:
- template <class Arg, class Result>
- pointer_to_unary_function<Arg,Result> ptr_fun (Result (*f)(Arg))
- {
- return pointer_to_unary_function<Arg,Result>(f);
- }
- template <class Arg1, class Arg2, class Result>
- pointer_to_binary_function<Arg1,Arg2,Result> ptr_fun (Result (*f)(Arg1,Arg2))
- {
- return pointer_to_binary_function<Arg1,Arg2,Result>(f);
- }
Template parameters
- Arg, Arg1, Arg2
- Types of the function's arguments.
- Result
- Function's return type.
Parameters
- f
- Pointer to a function, taking either one argument (of type Arg) or two arguments (of types Arg1 and Arg2) and returning a value of type Result.
Return value
A function object equivalent to f.
pointer_to_unary_function and pointer_to_binary_function are function object types, derived respectively fromunary_function and binary_function.
Example
- // ptr_fun example
- #include <iostream>
- #include <functional>
- #include <algorithm>
- #include <cstdlib>
- #include <numeric>
- using namespace std;
- int main () {
- char* foo[] = {"10","20","30","40","50"};
- int bar[5];
- int sum;
- transform (foo, foo+5, bar, ptr_fun(atoi) );
- sum = accumulate (bar, bar+5, 0);
- cout << "sum = " << sum << endl;
- return 0;
- }
Possible output:
- sum = 150
ptr_fun使用
转自:http://topic.csdn.net/u/20100112/16/e1973c74-d81c-4e49-bef8-128ab836800b.html
- // ceshi1.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <iostream>
- #include <functional>
- using std::cout;
- using std::endl;
- /*
- binary_function
- */
- template<typename Arg1,typename Arg2,typename Ret>
- class binary_function{
- public:
- typedef Arg1 first_argument_type;
- typedef Arg2 second_argument_type;
- typedef Ret return_type;
- };
- /*
- pointer_to_binary_function
- */
- template<typename Arg1,typename Arg2,typename Ret>
- class pointer_to_binary_function:public binary_function<Arg1,Arg2,Ret>{
- private:
- Ret (*pmf)(Arg1,Arg2);
- public:
- explicit pointer_to_binary_function(Ret (*pmf_)(Arg1,Arg2))
- :pmf(pmf_){
- }
- Ret operator()(Arg1 left,Arg2 right){
- return pmf(left,right);
- }
- };
- /*
- ptr_fun
- */
- template<typename Arg1,typename Arg2,typename Ret>
- pointer_to_binary_function<Arg1,Arg2,Ret> ptr_fun(Ret (*pf)(Arg1,Arg2)){
- return pointer_to_binary_function<Arg1,Arg2,Ret>(pf);
- }
- /*
- test_function
- */
- void test_function(int a,int b){
- cout<<"Arg1 is "<<a<<endl;
- cout<<"Arg2 is "<<b<<endl;
- }
- /*
- main
- */
- int main(int argc,char* argv[]){
- int a=3;
- int b=30;
- (pointer_to_binary_function<int,int,void>(test_function))(a,b);
- return 0;
- }
ptr_fun的更多相关文章
- 函数对象适配器之ptr_fun的使用示例
//============================================================================ // Name : CopyInts4.c ...
- 关于标准库中的ptr_fun/binary_function/bind1st/bind2nd
http://www.cnblogs.com/shootingstars/archive/2008/11/14/860042.html 以前使用bind1st以及bind2nd很少,后来发现这两个函数 ...
- ptr_fun学习笔记
ptr_fun是将一个普通的函数适配成一个functor,添加上argument type和result type等类型, 其实现如下(例子里面是binary_function,unary_funct ...
- 【转】三十分钟掌握STL
转自http://net.pku.edu.cn/~yhf/UsingSTL.htm 三十分钟掌握STL 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以 ...
- Bjarne Stroustrup对C++程序员的忠告
转自:http://blog.csdn.net/adm_qxx/archive/2007/05/20/1617488.aspx 第1章 致读者 [1] 在编写程序时,你是在为你针对某个问题的解决方 ...
- for_each使用方法详解[转]
for_each使用方法详解[转] Abstract之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL)曾經討論過for_each(),不過當時功力尚淺,只談 ...
- c++模板库(简介)
目 录 STL 简介 ......................................................................................... ...
- 三十分钟掌握STL
这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把它翻译出来.我没有对翻译出来的内容校验过.如果你没法在三十分钟内觉得有所收获,那么赶紧扔了 ...
- Effective STL
第9条:慎重选择删除元素的方法 删除特定值元素,vector.string.deque用erase-remove:c.erase(remove(c.begin(),c.end(),1963),c.en ...
随机推荐
- 爬虫之动态HTML处理(Selenium与PhantomJS )动态页面模拟点击
动态页面模拟点击 #!/usr/bin/env python # -*- coding:utf-8 -*- # python的测试模块 import unittest from selenium im ...
- 第六篇:Spark SQL Catalyst源码分析之Physical Plan
/** Spark SQL源码分析系列文章*/ 前面几篇文章主要介绍的是spark sql包里的的spark sql执行流程,以及Catalyst包内的SqlParser,Analyzer和Optim ...
- 【pytorch】pytorch基础学习
目录 1. 前言 # 2. Deep Learning with PyTorch: A 60 Minute Blitz 2.1 base operations 2.2 train a classifi ...
- R中去除为NA的行--转载
下面用实例来说明这两个函数的作用: 这是一个数据框final: gene hsap mmul mmus rnor cfam 1 ENSG00000208234 0 NA NA NA NA 2 ENSG ...
- MySQL 乐观锁 悲观锁 共享锁 排他锁
乐观锁 乐观锁是逻辑概念上的锁,不是数据库自带的,需要我们自己去实现.乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突,在操作数据时,并不进行任何其他的特殊处理(也就是不加锁 ...
- CountDownLatch await可能存在的问题
执行countdown的某个子线程可能会因为某些原因无法执行countdown,这样就会导致await线程一直阻塞下去. 在线程池中多次调用await方法,因为await方法会阻塞一段时间,有可能导致 ...
- springboot统一异常处理及返回数据的处理
一.返回code数据的处理 代码: Result.java /** * http请求返回的最外层对象 * Created by 廖师兄 * 2017-01-21 13:34 */ public cla ...
- Git的基础学习
https://www.w3cschool.cn/git/git-install-setup.html 一.安装 Git官网下载,安装,操作步骤可以百度 二.用户信息配置 配置个人用户名称和邮箱地址: ...
- Eclemma的安装
和TestNG安装一致 Help -->Install New Software --> Add Name: Eclemma Location:http://update.eclemma ...
- 自学数据库建模工具--powerdesigner
网上找了个英文的,版本感觉有点旧12的,但还好英语还行,摸索了一下功能,大概截了几张图,感觉优点:1总共有物理模型pdm,概念模型cdm,业务模型bdm 可以互转,逻辑清晰 2表与表之前的联系,建 ...