C++11关于function、bind的详解
来源:互联网 发布:ubuntu 14.04 snmp 编辑:程序博客网 时间:2024/05/29 11:43
std::function
转载自:http://en.cppreference.com/w/cpp/utility/functional/function
Defined in header
template< class ><functional>
class function; /* undefined */ (since C++11)template< class R, class... Args >
class function<R(Args...)> (since C++11)
Class template std::function
is a general-purpose polymorphic function wrapper. Instances of std::function
can store, copy, and invoke any Callable
target -- functions, lambda expressions, bind expressions, or other function objects, as well as pointers to member functions and pointers to data members.
The stored callable object is called the target of std::function
. If a std::function
contains no target, it is calledempty. Invoking the target of an empty std::function
results in std::bad_function_call exception being thrown.
std::function
satisfies the requirements of CopyConstructible
and CopyAssignable
.
Member types
TypeDefinitionresult_type
R
argument_type
T
if sizeof...(Args)==1 and T
is the first and only type in Args...
first_argument_type
T1
if sizeof...(Args)==2 and T1
is the first of the two types in Args...
second_argument_type
T2
if sizeof...(Args)==2 and T2
is the second of the two types in Args...
Member functions
(constructor)
std::function
instance (public member function)
(destructor)
std::function
instance (public member function)
operator=
(public member function)
swap
(public member function)
assign
(public member function)
operator bool
(public member function)
operator()
(public member function)
Target access
target_type
(public member function)
target
(public member function)
Non-member functions
std::swap(std::function)
(C++11)
(function template)
operator==operator!=
(function template)
Helper classes
std::uses_allocator<std::function>
(C++11)
(class template specialization)
Example
Run this code
#include <functional>#include <iostream> struct Foo { Foo(int num) : num_(num) {} void print_add(int i) const { std::cout << num_+i << '\n'; } int num_;}; void print_num(int i){ std::cout << i << '\n';} struct PrintNum { void operator()(int i) const { std::cout << i << '\n'; }}; int main(){ // store a free function std::function<void(int)> f_display = print_num; f_display(-9); // store a lambda std::function<void()> f_display_42 = []() { print_num(42); }; f_display_42(); // store the result of a call to std::bind std::function<void()> f_display_31337 = std::bind(print_num, 31337); f_display_31337(); // store a call to a member function std::function<void(const Foo&, int)> f_add_display = &Foo::print_add; const Foo foo(314159); f_add_display(foo, 1); // store a call to a member function and object using std::placeholders::_1; std::function<void(int)> f_add_display2= std::bind( &Foo::print_add, foo, _1 ); f_add_display2(2); // store a call to a member function and object ptr std::function<void(int)> f_add_display3= std::bind( &Foo::print_add, &foo, _1 ); f_add_display3(3); // store a call to a function object std::function<void(int)> f_display_obj = PrintNum(); f_display_obj(18);}
Output:
-9423133731416031416131416218
0 0
- C++11关于function、bind的详解
- 【C++】bind+function的回调机制
- [C++]C++11:Function与Bind
- C++11的bind,bind1st,bind2nd,function
- js关于Function.prototype.bind
- 关于boost::function与boost::bind函数的使用心得
- 关于boost::function与boost::bind函数的使用心得
- std::bind绑定器、std::function、extern C的使用
- C++11 学习笔记 std::function和bind绑定器
- C++11 笔记 std::function,bind绑定器和lambda
- 关于在js和jquery中bind的不同使用及手写实现Function.bind
- boost::function/bind 的使用
- std::bind与std::function详解
- std::bind和std::function详解
- function adapter bind(C++11)
- C++_std::bind std::function 高级用法
- c++:使用function模板和bind函数
- [C++] boost::function boost::bind 与 回调
- 设计模式总结
- POJ 3641-Pseudoprime numbers
- 超详细在Ubuntu下安装JDK图文解析
- @synthesize 何时用?:当同时实现setter and getter
- 南京邮电大学OJ——1094蛇形填数
- C++11关于function、bind的详解
- Valid Parentheses
- C - Modular multiplication of polynomials(4.3.2)
- java插入排序,冒泡排序,选择排序的思路及实现
- 【学生管理系统】--总结
- 解决Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
- hdu2089(数位dp入门题)
- Jzzhu and Sequences - CF 450B 矩阵快速幂版
- c++构造函数详解(转)