Thư viện C ++ - <chức năng>
Giới thiệu
Đối tượng hàm là các đối tượng được thiết kế đặc biệt để sử dụng với cú pháp tương tự như cú pháp của hàm. Các thể hiện của hàm std :: có thể lưu trữ, sao chép và gọi bất kỳ mục tiêu Có thể gọi nào - các hàm, biểu thức lambda, biểu thức ràng buộc hoặc các đối tượng hàm khác, cũng như con trỏ đến các hàm thành viên và con trỏ tới các thành viên dữ liệu.
Tờ khai
Sau đây là khai báo cho hàm std ::.
template<class >
class function;
C ++ 11
template< class R, class... Args >
class function<R(Args...)>
Thông số
R - result_type.
argument_type - T nếu sizeof ... (Args) == 1 và T là kiểu đầu tiên và duy nhất trong Args.
Thí dụ
Trong ví dụ dưới đây cho hàm std ::.
#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);
}
Đầu ra mẫu phải như thế này -
-9
42
31337
314160
num_: 314159
314161
314162
18
Chức năng thành viên
Sr.No. | Chức năng thành viên | Định nghĩa |
---|---|---|
1 | (constructor) | Nó được sử dụng để xây dựng một cá thể hàm std :: mới |
2 | (máy hủy) | Nó được sử dụng để hủy một cá thể hàm std :: |
3 | toán tử = | Nó được sử dụng để chỉ định một mục tiêu mới |
4 | hoán đổi | Nó được sử dụng để hoán đổi nội dung |
5 | chỉ định | Nó được sử dụng để chỉ định một mục tiêu mới |
6 | nhà điều hành bool | Nó được sử dụng để kiểm tra xem có chứa mục tiêu hợp lệ hay không |
7 | nhà điều hành() | Nó được sử dụng để gọi mục tiêu |
Các chức năng không phải thành viên
Sr.No. | Các chức năng không phải thành viên | Định nghĩa |
---|---|---|
1 | std :: swap | Nó chuyên về thuật toán std :: swap |
2 | toán tử == toán tử! = | Nó so sánh một hàm std :: với nullptr |
Các lớp toán tử
Sr.No. | Các lớp toán tử | Định nghĩa |
---|---|---|
1 | bit_and | Nó là một lớp đối tượng hàm AND bitwise |
2 | bit_or | Nó là một lớp đối tượng hàm OR bitwise |
3 | bit_xor | Nó là một lớp đối tượng hàm XOR bitwise |
3 | phân chia | Nó là một lớp đối tượng chức năng phân chia |
4 | tương đương với | Nó là một lớp đối tượng hàm để so sánh bình đẳng |
5 | lớn hơn | Nó là một lớp đối tượng hàm để so sánh bất bình đẳng lớn hơn |
6 | lớn hơn | Nó là một lớp đối tượng hàm để so sánh lớn hơn hoặc bằng |
7 | ít hơn | Nó là một lớp đối tượng hàm để so sánh bất bình đẳng nhỏ hơn |
số 8 | less_equal | Nó là một lớp đối tượng hàm để so sánh nhỏ hơn hoặc bằng |
9 | logic_and | Nó là một lớp đối tượng hàm logic AND |
10 | logic_not | Nó là một lớp đối tượng hàm NOT logic |
11 | logic_hoặc | Nó là một lớp đối tượng hàm OR logic |
12 | dấu trừ | Nó là một lớp đối tượng hàm trừ |
13 | mô đun | Nó là một lớp đối tượng chức năng mô-đun |
14 | nhân lên | Nó là một lớp đối tượng chức năng nhân |
15 | phủ định | Nó là một lớp đối tượng hàm phủ định |
16 | not_equal_to | Nó là một lớp đối tượng hàm để so sánh không bình đẳng |
17 | thêm | Nó là một lớp đối tượng hàm bổ sung |