- C 标准库
- C 标准库
- C++ 标准库
- C++ 库 - 首页
- C++ 库 - <fstream>
- C++ 库 - <iomanip>
- C++ 库 - <ios>
- C++ 库 - <iosfwd>
- C++ 库 - <iostream>
- C++ 库 - <istream>
- C++ 库 - <ostream>
- C++ 库 - <sstream>
- C++ 库 - <streambuf>
- C++ 库 - <atomic>
- C++ 库 - <complex>
- C++ 库 - <exception>
- C++ 库 - <functional>
- C++ 库 - <limits>
- C++ 库 - <locale>
- C++ 库 - <memory>
- C++ 库 - <new>
- C++ 库 - <numeric>
- C++ 库 - <regex>
- C++ 库 - <stdexcept>
- C++ 库 - <string>
- C++ 库 - <thread>
- C++ 库 - <tuple>
- C++ 库 - <typeinfo>
- C++ 库 - <utility>
- C++ 库 - <valarray>
- C++ STL 库
- C++ 库 - <array>
- C++ 库 - <bitset>
- C++ 库 - <deque>
- C++ 库 - <forward_list>
- C++ 库 - <list>
- C++ 库 - <map>
- C++ 库 - <multimap>
- C++ 库 - <queue>
- C++ 库 - <priority_queue>
- C++ 库 - <set>
- C++ 库 - <stack>
- C++ 库 - <unordered_map>
- C++ 库 - <unordered_set>
- C++ 库 - <vector>
- C++ 库 - <algorithm>
- C++ 库 - <iterator>
- C++ 高级库
- C++ 库 - <any>
- C++ 库 - <barrier>
- C++ 库 - <bit>
- C++ 库 - <chrono>
- C++ 库 - <cinttypes>
- C++ 库 - <clocale>
- C++ 库 - <condition_variable>
- C++ 库 - <coroutine>
- C++ 库 - <cstdlib>
- C++ 库 - <cstring>
- C++ 库 - <cuchar>
- C++ 库 - <charconv>
- C++ 库 - <cfenv>
- C++ 库 - <cmath>
- C++ 库 - <ccomplex>
- C++ 库 - <expected>
- C++ 库 - <format>
- C++ 库 - <future>
- C++ 库 - <flat_set>
- C++ 库 - <flat_map>
- C++ 库 - <filesystem>
- C++ 库 - <generator>
- C++ 库 - <initializer_list>
- C++ 库 - <latch>
- C++ 库 - <memory_resource>
- C++ 库 - <mutex>
- C++ 库 - <mdspan>
- C++ 库 - <optional>
- C++ 库 - <print>
- C++ 库 - <ratio>
- C++ 库 - <scoped_allocator>
- C++ 库 - <semaphore>
- C++ 库 - <source_location>
- C++ 库 - <span>
- C++ 库 - <spanstream>
- C++ 库 - <stacktrace>
- C++ 库 - <stop_token>
- C++ 库 - <syncstream>
- C++ 库 - <system_error>
- C++ 库 - <string_view>
- C++ 库 - <stdatomic>
- C++ 库 - <variant>
- C++ STL 库速查表
- C++ STL - 速查表
C++ 库 - <functional>
简介
函数对象是专门设计用于以类似于函数的语法使用的对象。std::function 的实例可以存储、复制和调用任何可调用目标——函数、lambda 表达式、bind 表达式或其他函数对象,以及指向成员函数的指针和指向数据成员的指针。
声明
以下是 std::function 的声明。
template<class > class function;
C++11
template< class R, class... Args > class function<R(Args...)>
参数
R - 返回值类型。
argument_type - 如果 sizeof...(Args)==1 且 T 是 Args 中第一个也是唯一的类型,则为 T。
示例
在下面的 std::function 示例中。
#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() { std::function<void(int)> f_display = print_num; f_display(-9); std::function<void()> f_display_42 = []() { print_num(42); }; f_display_42(); std::function<void()> f_display_31337 = std::bind(print_num, 31337); f_display_31337(); std::function<void(const Foo&, int)> f_add_display = &Foo::print_add; const Foo foo(314159); f_add_display(foo, 1); std::function<int(Foo const&)> f_num = &Foo::num_; std::cout << "num_: " << f_num(foo) << '\n'; using std::placeholders::_1; std::function<void(int)> f_add_display2= std::bind( &Foo::print_add, foo, _1 ); f_add_display2(2); std::function<void(int)> f_add_display3= std::bind( &Foo::print_add, &foo, _1 ); f_add_display3(3); std::function<void(int)> f_display_obj = PrintNum(); f_display_obj(18); }
示例输出应如下所示:
-9 42 31337 314160 num_: 314159 314161 314162 18
成员函数
序号 | 成员函数 | 定义 |
---|---|---|
1 | (构造函数) | 用于构造新的 std::function 实例 |
2 | (析构函数) | 用于销毁 std::function 实例 |
3 | operator= | 用于分配新的目标 |
4 | swap | 用于交换内容 |
5 | assign | 用于分配新的目标 |
6 | operator bool | 用于检查是否包含有效目标 |
7 | operator() | 用于调用目标 |
非成员函数
序号 | 非成员函数 | 定义 |
---|---|---|
1 | std::swap | 专门化 std::swap 算法 |
2 | operator== operator!= | 将 std::function 与 nullptr 进行比较 |
运算符类
序号 | 运算符类 | 定义 |
---|---|---|
1 | bit_and | 位与函数对象类 |
2 | bit_or | 位或函数对象类 |
3 | bit_xor | 位异或函数对象类 |
3 | divides | 除法函数对象类 |
4 | equal_to | 用于相等比较的函数对象类 |
5 | greater | 用于大于不等式比较的函数对象类 |
6 | greater_equal | 用于大于或等于比较的函数对象类 |
7 | less | 用于小于不等式比较的函数对象类 |
8 | less_equal | 用于小于或等于比较的函数对象类 |
9 | logical_and | 逻辑与函数对象类 |
10 | logical_not | 逻辑非函数对象类 |
11 | logical_or | 逻辑或函数对象类 |
12 | minus | 减法函数对象类 |
13 | modulus | 取模函数对象类 |
14 | multiplies | 乘法函数对象类 |
15 | negate | 负函数对象类 |
16 | not_equal_to | 用于不相等比较的函数对象类 |
17 | plus | 加法函数对象类 |
广告