<functional>

Mendefinisikan fungsi Pustaka Standar C++ yang membantu membangun objek fungsi, juga dikenal sebagai funktor, dan pengikatnya. Objek fungsi adalah objek dari jenis yang mendefinisikan operator(). Objek fungsi dapat menjadi penunjuk fungsi, tetapi lebih biasanya, objek digunakan untuk menyimpan informasi tambahan yang dapat diakses selama panggilan fungsi.

Persyaratan

Header:<functional>

Namespace: std

Keterangan

Algoritma memerlukan dua jenis objek fungsi: unary dan biner. Objek fungsi unary memerlukan satu argumen, dan objek fungsi biner memerlukan dua argumen. Objek fungsi dan penunjuk fungsi dapat diteruskan sebagai predikat untuk algoritma, tetapi objek fungsi juga dapat disesuaikan dan meningkatkan cakupan, fleksibilitas, dan efisiensi Pustaka Standar C++. Jika, misalnya, nilai yang diperlukan untuk terikat ke fungsi sebelum diteruskan ke algoritma, maka penunjuk fungsi tidak dapat digunakan. Adaptor fungsi mengonversi penunjuk fungsi menjadi objek fungsi yang dapat disesuaikan yang dapat diikat ke nilai. Fungsional> header <juga berisi adaptor fungsi anggota yang memungkinkan fungsi anggota dipanggil sebagai objek fungsi yang dapat disesuaikan. Fungsi dapat disesuaikan jika memiliki deklarasi jenis berlapis yang menentukan argumen dan jenis pengembaliannya. Objek fungsi dan adaptornya memungkinkan Pustaka Standar C++ untuk meningkatkan aplikasi yang ada dan membantu mengintegrasikan pustaka ke lingkungan pemrograman C++.

Implementasi objek fungsi dalam <fungsional> mencakup funktor operator transparan, yang merupakan spesialisasi objek fungsi standar dan tidak mengambil parameter templat, dan melakukan penerusan sempurna dari argumen fungsi dan pengembalian hasil yang sempurna. Spesialisasi templat ini tidak mengharuskan Anda menentukan jenis argumen saat Anda memanggil funktor operator aritmatika, perbandingan, logis, dan bitwise. Anda dapat membebani operator aritmetika, perbandingan, logis, atau bitwise untuk jenis Anda sendiri, atau untuk kombinasi jenis heterogen, lalu menggunakan funktor operator transparan sebagai argumen fungsi. Misalnya, jika jenis MyType Anda mengimplementasikan operator<, Anda dapat memanggil sort(my_collection.begin(), my_collection.end(), less<>()) alih-alih secara eksplisit menentukan jenis sort(my_collection.begin(), my_collection.end(), less<MyType>()).

Fitur berikut ditambahkan dalam C++11, C++14 dan C++17:

  • Tanda tangan panggilan adalah nama jenis pengembalian diikuti oleh daftar tipe argumen nol atau lebih yang dipisahkan koma yang dikurung.

  • Jenis yang dapat dipanggil adalah penunjuk ke fungsi, penunjuk ke fungsi anggota, penunjuk ke data anggota, atau jenis kelas yang objeknya dapat muncul segera di sebelah kiri operator panggilan fungsi.

  • Objek yang dapat dipanggil adalah objek dari jenis yang dapat dipanggil.

  • Jenis pembungkus panggilan adalah jenis yang menyimpan objek yang dapat dipanggil dan mendukung operasi panggilan yang diteruskan ke objek tersebut.

  • Pembungkus panggilan adalah objek dari jenis pembungkus panggilan.

  • Objek target adalah objek yang dapat dipanggil yang dipegang oleh objek pembungkus panggilan.

Fungsi pseudo INVOKE(f, t1, t2, ..., tN) berarti salah satu hal berikut:

  • (t1.*f)(t2, ..., tN) ketika f adalah fungsi penunjuk ke anggota kelas T dan t1 merupakan objek jenis T atau referensi ke objek jenis T atau referensi ke objek jenis yang berasal dari T.

  • ((*t1).*f)(t2, ..., tN) ketika f adalah fungsi penunjuk ke anggota kelas T dan t1 bukan salah satu jenis yang dijelaskan dalam item sebelumnya.

  • t1.*f ketika N == 1 dan f merupakan penunjuk ke data anggota kelas T dan t1 merupakan objek jenis T atau referensi ke objek jenis T atau referensi ke objek jenis yang berasal dari T.

  • (*t1).*f ketika N == 1 dan f merupakan penunjuk ke data anggota kelas T dan t1 bukan salah satu jenis yang dijelaskan dalam item sebelumnya.

  • f(t1, t2, ..., tN) dalam semua kasus lainnya.

Fungsi pseudo INVOKE(f, t1, t2, ..., tN, R) berarti INVOKE(f, t1, t2, ..., tN) dikonversi secara implisit menjadi R.

Jika pembungkus panggilan memiliki jenis hasil yang lemah, jenis jenis result_type anggotanya didasarkan pada jenis T objek target pembungkus, sebagai berikut:

  • Jika T adalah penunjuk ke fungsi, result_type adalah sinonim untuk jenis Tpengembalian .

  • Jika T adalah fungsi pointer ke anggota, result_type adalah sinonim untuk jenis pengembalian .T

  • Jika T adalah jenis kelas yang memiliki jenis result_typeanggota , maka result_type adalah sinonim untuk T::result_type.

  • Jika tidak, tidak ada anggota result_type.

Setiap pembungkus panggilan memiliki konstruktor pemindahan dan konstruktor salinan. Pembungkus panggilan sederhana adalah pembungkus panggilan yang memiliki operator penugasan dan konstruktor salinannya, konstruktor pemindahan, dan operator penugasan tidak melemparkan pengecualian. Pembungkus panggilan penerusan adalah pembungkus panggilan yang dapat dipanggil dengan menggunakan daftar argumen arbitrer dan yang mengirimkan argumen ke objek yang dapat dipanggil yang dibungkus sebagai referensi. Semua argumen rvalue dikirimkan sebagai referensi rvalue, dan argumen lvalue dikirimkan sebagai referensi lvalue.

Anggota

Kelas

Nama Deskripsi
bad_function_call Kelas yang menjelaskan pengecualian yang dilemparkan untuk menunjukkan bahwa panggilan ke operator() pada objek fungsi gagal karena objek kosong.
binary_negate Templat kelas yang menyediakan fungsi anggota yang meniadakan nilai pengembalian fungsi biner tertentu.
(Tidak digunakan lagi di C++17.)
binder1st Templat kelas menyediakan konstruktor yang mengonversi objek fungsi biner menjadi objek fungsi unary dengan mengikat argumen pertama dari fungsi biner ke nilai yang ditentukan.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
binder2nd Templat kelas yang menyediakan konstruktor yang mengonversi objek fungsi biner menjadi objek fungsi unary dengan mengikat argumen kedua dari fungsi biner ke nilai yang ditentukan.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
boyer_moore_horspool_searcher
boyer_moore_searcher
const_mem_fun_ref_t Kelas adaptor yang memungkinkan fungsi anggota const yang tidak mengambil argumen untuk dipanggil sebagai objek fungsi unary saat diinisialisasi dengan argumen referensi.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
const_mem_fun_t Kelas adaptor yang memungkinkan fungsi anggota const yang tidak mengambil argumen untuk dipanggil sebagai objek fungsi unary saat diinisialisasi dengan argumen pointer.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
const_mem_fun1_ref_t Kelas adaptor yang memungkinkan fungsi anggota const yang mengambil satu argumen untuk dipanggil sebagai objek fungsi biner saat diinisialisasi dengan argumen referensi.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
const_mem_fun1_t Kelas adaptor yang memungkinkan fungsi anggota const yang mengambil argumen tunggal untuk dipanggil sebagai objek fungsi biner saat diinisialisasi dengan argumen pointer.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
default_searcher
fungsi Kelas yang membungkus objek yang dapat dipanggil.
Hash Kelas yang menghitung kode hash untuk nilai.
is_bind_expression Kelas yang menguji apakah jenis tertentu dihasilkan dengan memanggil bind.
is_placeholder Kelas yang menguji apakah jenis tertentu adalah tempat penampung.
mem_fun_ref_t Kelas adaptor yang memungkinkan non_const fungsi anggota yang tidak mengambil argumen untuk dipanggil sebagai objek fungsi unary saat diinisialisasi dengan argumen referensi.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
mem_fun_t Kelas adaptor yang memungkinkan non_const fungsi anggota yang tidak mengambil argumen untuk dipanggil sebagai objek fungsi unary saat diinisialisasi dengan argumen pointer.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
mem_fun1_ref_t Kelas adaptor yang memungkinkan non_const fungsi anggota yang mengambil satu argumen untuk dipanggil sebagai objek fungsi biner saat diinisialisasi dengan argumen referensi.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
mem_fun1_t Kelas adaptor yang memungkinkan non_const fungsi anggota yang mengambil satu argumen untuk dipanggil sebagai objek fungsi biner saat diinisialisasi dengan argumen penunjuk.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
pointer_to_binary_function Mengonversi penunjuk fungsi biner menjadi fungsi biner yang dapat disesuaikan.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
pointer_to_unary_function Mengonversi penunjuk fungsi unary menjadi fungsi unary yang dapat disesuaikan.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
reference_wrapper Kelas yang membungkus referensi.
unary_negate Templat kelas yang menyediakan fungsi anggota yang meniadakan nilai pengembalian fungsi unary yang ditentukan.
(Tidak digunakan lagi di C++17.)

Fungsi

Nama Deskripsi
Mengikat Mengikat argumen ke objek yang dapat dipanggil.
bind1st Fungsi templat pembantu yang membuat adaptor untuk mengonversi objek fungsi biner menjadi objek fungsi unary dengan mengikat argumen pertama fungsi biner ke nilai yang ditentukan.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
bind2nd Fungsi templat pembantu yang membuat adaptor untuk mengonversi objek fungsi biner menjadi objek fungsi unary dengan mengikat argumen kedua fungsi biner ke nilai tertentu.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
bit_and Mengembalikan bitwise AND (biner operator&) dari dua parameter.
bit_not Mengembalikan pelengkap bitwise (operator~) parameter.
(Ditambahkan dalam C++14.)
bit_or Mengembalikan bitwise OR (operator|) dari dua parameter.
bit_xor Mengembalikan XOR bitwise (operator^) dari dua parameter.
cref Membuat const reference_wrapper dari argumen.
Memohon
mem_fn Menghasilkan pembungkus panggilan sederhana.
mem_fun Fungsi templat pembantu yang digunakan untuk membangun adaptor objek fungsi untuk fungsi anggota saat diinisialisasi dengan argumen penunjuk.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
mem_fun_ref Fungsi templat pembantu yang digunakan untuk membangun adaptor objek fungsi untuk fungsi anggota saat diinisialisasi dengan argumen referensi.
not1 Mengembalikan pelengkap predikat unary.
(Tidak digunakan lagi di C++17.)
not2 Mengembalikan pelengkap predikat biner.
(Tidak digunakan lagi di C++17.)
not_fn Mengembalikan pelengkap hasil objek fungsinya.
(Ditambahkan dalam C++17.)
ptr_fun Fungsi templat pembantu yang digunakan untuk mengonversi penunjuk fungsi unary dan biner, masing-masing, menjadi fungsi yang dapat diadaptasi unary dan biner.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
ref Membuat reference_wrapper dari argumen.
tukar Tukar dua function objek.

Struct

Nama Deskripsi
binary_function Kelas dasar kosong yang menentukan jenis yang mungkin diwarisi oleh kelas turunan yang menyediakan objek fungsi biner.
(Tidak digunakan lagi di C++11, dihapus di C++17.)
Membagi Kelas ini menyediakan objek fungsi yang telah ditentukan sebelumnya yang melakukan operasi aritmatika pembagian pada elemen dari jenis nilai tertentu.
equal_to Predikat biner yang menguji apakah nilai jenis tertentu sama dengan nilai lain dari jenis tersebut.
lebih besar Predikat biner yang menguji apakah nilai jenis tertentu lebih besar dari nilai lain dari jenis tersebut.
greater_equal Predikat biner yang menguji apakah nilai dari jenis tertentu lebih besar dari atau sama dengan nilai lain dari jenis tersebut.
kurang Predikat biner yang menguji apakah nilai jenis tertentu kurang dari nilai lain dari jenis tersebut.
less_equal Predikat biner yang menguji apakah nilai dari jenis tertentu kurang dari atau sama dengan nilai lain dari jenis tersebut.
logical_and Kelas ini menyediakan objek fungsi yang telah ditentukan sebelumnya yang melakukan operasi logis konjungsi pada elemen jenis nilai dan pengujian tertentu untuk kebenaran atau falsitas hasil.
logical_not Kelas ini menyediakan objek fungsi yang telah ditentukan sebelumnya yang melakukan operasi logis negasi pada elemen dari jenis nilai tertentu dan pengujian untuk kebenaran atau falsitas hasil.
logical_or Kelas ini menyediakan objek fungsi yang telah ditentukan sebelumnya yang melakukan operasi logis disjunction pada elemen jenis nilai dan pengujian tertentu untuk kebenaran atau falsitas hasil.
minus Kelas ini menyediakan objek fungsi yang telah ditentukan sebelumnya yang melakukan operasi aritmatika pengurangan pada elemen dari jenis nilai yang ditentukan.
modulus Kelas ini menyediakan objek fungsi yang telah ditentukan sebelumnya yang melakukan operasi aritmatika modulus pada elemen dari jenis nilai yang ditentukan.
Mengalikan Kelas ini menyediakan objek fungsi yang telah ditentukan sebelumnya yang melakukan operasi aritmatika perkalian pada elemen dari jenis nilai yang ditentukan.
negate Kelas menyediakan objek fungsi yang telah ditentukan sebelumnya yang mengembalikan negatif dari nilai elemen.
not_equal_to Predikat biner yang menguji apakah nilai dari jenis tertentu tidak sama dengan nilai lain dari jenis tersebut.
Plus Kelas ini menyediakan objek fungsi yang telah ditentukan sebelumnya yang melakukan operasi aritmatika penambahan pada elemen dari jenis nilai tertentu.
unary_function Kelas dasar kosong yang menentukan jenis yang mungkin diwariskan oleh kelas turunan yang menyediakan objek fungsi unary.
(Tidak digunakan lagi di C++11, dihapus di C++17.)

Objek

Nama Deskripsi
_1.._M Tempat penampung untuk argumen yang dapat diganti.

Operators

Nama Deskripsi
operator== Melarang perbandingan kesetaraan objek yang dapat dipanggil.
operator!= Melarang perbandingan ketidaksamaan objek yang dapat dipanggil.

Baca juga

Referensi File Header
Keamanan utas di Pustaka Standar C++
Referensi pustaka standar C++