Objek fungsi, atau kunctor, dalam C adalah contoh kelas yang mentakrifkan operator()
. Ini membolehkan objek digunakan seolah -olah ia berfungsi. Untuk menggunakan functor, anda mula -mula menentukan kelas dengan kaedah operator()
dan kemudian membuat contoh kelas itu. Berikut adalah contoh mudah untuk menggambarkan penggunaannya:
<code class="cpp">#include <iostream> class Multiply { public: int operator()(int x, int y) { return x * y; } }; int main() { Multiply mul; // Create a functor instance std::cout </iostream></code>
Dalam contoh ini, Multiply
adalah kelas Functor yang mempunyai kaedah operator()
yang mengambil dua bilangan bulat dan mengembalikan produk mereka. Apabila anda membuat contoh mul
Multiply
, anda boleh memanggilnya seperti fungsi dengan mul(3, 4)
, yang mengeluarkan 12
.
Terdapat beberapa manfaat menggunakan FUNGTORS ENSED FUNCTIONS BILIGE dalam C:
std::sort
atau std::find_if
, boleh mengambil functors sebagai argumen, menjadikannya lebih fleksibel dan berkuasa. Untuk melaksanakan functor tersuai di C, anda perlu menentukan kelas dengan kaedah operator()
. Berikut adalah contoh functor tersuai yang mengira bilangan kali ia dipanggil:
<code class="cpp">#include <iostream> class CallCounter { private: int count; public: CallCounter() : count(0) {} void operator()() { count; std::cout </iostream></code>
Dalam contoh ini, CallCounter
adalah functor tersuai yang menyimpan pembolehubah ahli count
swasta. Setiap kali functor dipanggil, ia meningkatkan kiraan dan mencetak kiraan semasa.
Functors digunakan secara meluas dalam pengaturcaraan C untuk pelbagai tujuan. Berikut adalah beberapa kes penggunaan biasa:
Penyortiran tersuai : Functors boleh digunakan dengan std::sort
untuk menentukan kriteria penyortiran tersuai. Sebagai contoh, anda boleh menyusun vektor objek berdasarkan atribut tertentu.
<code class="cpp">struct Person { std::string name; int age; }; struct SortByAge { bool operator()(const Person& a, const Person& b) { return a.age people = {...}; std::sort(people.begin(), people.end(), SortByAge());</code>
Penyesuaian Algoritma : Banyak algoritma perpustakaan standard, seperti std::find_if
, std::accumulate
, dan std::transform
, boleh mengambil functors untuk menyesuaikan tingkah laku mereka.
<code class="cpp">std::vector<int> numbers = {1, 2, 3, 4, 5}; auto even = std::find_if(numbers.begin(), numbers.end(), [](int x) { return x % 2 == 0; });</int></code>
Contoh -contoh ini menggambarkan bagaimana Functors dapat meningkatkan fleksibiliti dan ekspresi kod C, menjadikannya alat yang berkuasa dalam pengaturcaraan C moden.
Atas ialah kandungan terperinci Bagaimanakah saya menggunakan objek fungsi (functors) dalam c?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!