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