Perpustakaan C ++ - <fungsional>

pengantar

Objek fungsi adalah objek yang dirancang khusus untuk digunakan dengan sintaks yang mirip dengan fungsi. Instance dari std :: function dapat menyimpan, menyalin, dan memanggil fungsi Callable target -, ekspresi lambda, ekspresi bind, atau objek fungsi lainnya, serta pointer ke fungsi anggota dan pointer ke anggota data.

Pernyataan

Berikut adalah deklarasi untuk std :: function.

template<class >
class function;

C ++ 11

template< class R, class... Args >
class function<R(Args...)>

Parameter

  • R - result_type.

  • argument_type - T if sizeof ... (Args) == 1 dan T adalah tipe pertama dan satu-satunya di Args.

Contoh

Dalam contoh di bawah ini untuk 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);
}

Output sampel harus seperti ini -

-9
42
31337
314160
num_: 314159
314161
314162
18

Fungsi anggota

Sr.No. Fungsi anggota Definisi
1 (konstruktor) Ini digunakan untuk membuat turunan std :: function baru
2 (penghancur) Ini digunakan untuk menghancurkan turunan std :: function
3 operator = Ini digunakan untuk menetapkan target baru
4 menukar Ini digunakan untuk menukar konten
5 menetapkan Ini digunakan untuk menetapkan target baru
6 operator bool Ini digunakan untuk memeriksa apakah ada target yang valid
7 operator() Ini digunakan untuk memanggil target

Fungsi non-anggota

Sr.No. Fungsi non-anggota Definisi
1 std :: swap Ini mengkhususkan diri pada algoritma std :: swap
2 operator == operator! = Ini membandingkan std :: function dengan nullptr

Kelas operator

Sr.No. Kelas operator Definisi
1 bit_and Ini adalah kelas objek AND fungsi bitwise
2 bit_or Ini adalah kelas objek OR fungsi bitwise
3 bit_xor Ini adalah kelas objek fungsi XOR bitwise
3 membagi Ini adalah kelas objek fungsi divisi
4 sama dengan Ini adalah kelas objek fungsi untuk perbandingan kesetaraan
5 lebih besar Ini adalah kelas objek fungsi untuk perbandingan pertidaksamaan lebih besar dari
6 Greater_equal Ini adalah kelas objek fungsi untuk perbandingan lebih besar dari atau sama dengan
7 kurang Ini adalah kelas objek fungsi untuk perbandingan ketimpangan kurang dari
8 less_equal Ini adalah kelas objek fungsi untuk perbandingan kurang dari atau sama
9 logika_dan Ini adalah kelas objek fungsi AND logis
10 logika_not Ini adalah kelas objek fungsi NOT yang logis
11 logika_atau Ini adalah kelas objek OR fungsi logis
12 minus Ini adalah kelas objek fungsi pengurangan
13 modulus Ini adalah kelas objek fungsi modulus
14 mengalikan Ini adalah kelas objek fungsi perkalian
15 meniadakan Ini adalah kelas objek fungsi negatif
16 tidak sebanding dengan Ini adalah kelas objek fungsi untuk perbandingan non-persamaan
17 plus Ini adalah kelas objek fungsi penjumlahan