<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)
ketikaf
adalah fungsi penunjuk ke anggota kelasT
dant1
merupakan objek jenisT
atau referensi ke objek jenisT
atau referensi ke objek jenis yang berasal dariT
.((*t1).*f)(t2, ..., tN)
ketikaf
adalah fungsi penunjuk ke anggota kelasT
dant1
bukan salah satu jenis yang dijelaskan dalam item sebelumnya.t1.*f
ketika N == 1 danf
merupakan penunjuk ke data anggota kelasT
dant1
merupakan objek jenisT
atau referensi ke objek jenisT
atau referensi ke objek jenis yang berasal dariT
.(*t1).*f
ketika N == 1 danf
merupakan penunjuk ke data anggota kelasT
dant1
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 jenisT
pengembalian .Jika
T
adalah fungsi pointer ke anggota,result_type
adalah sinonim untuk jenis pengembalian .T
Jika
T
adalah jenis kelas yang memiliki jenisresult_type
anggota , makaresult_type
adalah sinonim untukT::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. |
Structs
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. |
tambah | 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. |
Operator
Nama | Deskripsi |
---|---|
operator== | Melarang perbandingan kesetaraan objek yang dapat dipanggil. |
operator!= | Melarang perbandingan ketidaksamaan objek yang dapat dipanggil. |
Lihat juga
Referensi File Header
Keamanan utas di Pustaka Standar C++
Referensi pustaka standar C++