// functional_ptr_fun.cpp// compile with: /EHsc#include<vector>#include<algorithm>#include<functional>#include<cstring>#include<iostream>intmain( ){usingnamespacestd;vector<char*> v1;vector<char*>::iterator Iter1, RIter; v1.push_back ("Open"); v1.push_back ("up"); v1.push_back ...
sort(v.begin(), v.end(), ptr_fun(compare)); for_each(v.begin(), v.end(), ori_output); for_each(v.begin(), v.end(), bind2nd((ptr_fun(output)),2)); } 二、mem_fun_ref 如果使用普通函数作为回调函数存在一种问题,即函数无法使用与之有关的变量,而且通过设置全局变量的方式由不太妥...
由上面的代码可见,ptr_fun只是将一个普通的函数(或者函数指针)适配成类pointer_to_binary_function,而该类实际上是binary_function的子类,这样出来的functor就有利于同STL的算法等适配。 下面的例子就是说明了使用ptr_fun将普通的函数适配成bind1st或bind2nd能够使用的functor,否则对bind1st或bind2nd直接绑定普通函数,...
因此也不奇怪像mem_fun_t这样的类被称为函数对象适配器。知道这个不应该使你惊讶,完全类似上述的,mem_fun_ref函数适配语法#2到语法#1,并产生mem_fun_ref_t类型的适配器对象。 mem_fun和mem_fun_ref产生的对象不仅允许STL组件假设所有函数都使用单一的语法调用。它们也提供重要的typedef,正如ptr_fun产生的对象一...
c++17的std::ptr_fun替代方案 c++17中的std::ptr_fun是一个函数模板,用于将普通函数或函数对象转换为函数指针。它是在C++11标准中引入的,但在C++17中被弃用,并且没有官方的替代方案。在C++17中,建议使用lambda表达式或者使用std::function来替代std::ptr_fun。
ptr_fun做的唯一的事是使一些typedef有效( 仿函数类的operator()所带的参数的类型和它的返回类型。对于binary_function,你要指定三个类型:你的operator的第一个和第二个参数的类型,和你的operator地返回类型; 而这两个基类 typedef 了argument_type、first_argument_type、second_argument_type和result_type 这几种...
由上面的代码可见,ptr_fun只是将一个普通的函数(或者函数指针)适配成类pointer_to_binary_function,而该类实际上是binary_function的子类,这样出来的functor就有利于同STL的算法等适配。 下面的例子就是说明了使用ptr_fun将普通的函数适配成bind1st或bind2nd能够使用的functor,否则对bind1st或bind2nd直接绑定普通函数,...
std::ptr_fun 是用来把函数指针封装为「符合某种特殊条件的『函数对象』」的函数。至于「函数对象」是...
ptr_fun(Result(*f)(Arg1, Arg2)); (2)(C++11 中弃用) (C++17 中移除) 创建函数包装器对象(std::pointer_to_unary_function或std::pointer_to_binary_function),从模板实参推导目标类型。 1) 等效地调用std::pointer_to_unary_function<Arg,Result>(f)。
ptr_fun找不到标识符从main函数出发。1、首先调用print2函数,print。2、把定义的函数放在,main函数之前即可。