Rumah >pembangunan bahagian belakang >C++ >Adakah `std::bind` Berlebihan dalam C 14, dan Bilakah Anda Masih Perlu Menggunakannya?
Memahami Keupayaan std::bind dalam C 14
Dalam bidang pengaturcaraan C, std::bind dan lambdas telah digunakan secara meluas untuk mengikat fungsi dan objek kepada hujah. Pada mulanya, boost::bind and boost::lambda memegang tampuk pemerintahan mereka, tetapi dengan kemajuan dalam piawaian C, fungsi ini digabungkan terus ke dalam bahasa.
C 14: The Decline of std:: bind
Dengan pengenalan C 14, lambdas memudahkan proses mencipta objek boleh dipanggil, mengurangkan keperluan untuk std::bind dalam kebanyakan kes. Perubahan ini mencetuskan perdebatan sama ada std::bind telah menjadi berlebihan.
Kes Penggunaan Luar Biasa untuk std::bind
Walaupun lambdas menawarkan penyelesaian yang serba boleh, std: :bind mengekalkan beberapa kes penggunaan yang luar biasa apabila ia lebih cemerlang lambdas:
Lebih Muatan Argumen: Tidak seperti lambdas, std::bind menyokong argumen fungsi lebihan. Contohnya:
struct foo { template <typename A, typename B> void operator()(A a, B b) { cout << a << ' ' << b; } }; auto f = bind(foo(), _1, _2); f("test", 1.2f); // prints "test 1.2"
Merakam Ungkapan: Dalam C 11, lambdas tidak boleh menangkap ungkapan, manakala std::bind membenarkannya. Contohnya:
auto f1 = std::bind(f, 42, _1, a + b);
C 14 Advances: Lambdas Take Center Stage
C 14 memperkenalkan peningkatan penting yang menghapuskan kelebihan std: :ikat atas lambdas:
Kelemahan std::bind
Walaupun kes penggunaannya terhad, std::bind mempunyai kelemahan tertentu:
Kesimpulan
Dalam C 14 dan seterusnya, lambda telah muncul sebagai pilihan pilihan untuk mengikat fungsi dan objek. Walaupun std::bind kekal berguna dalam senario tertentu, aplikasi luasnya telah berkurangan memandangkan kepelbagaian dan keupayaan lambdas yang dipertingkatkan. Walau bagaimanapun, memahami selok-belok kedua-dua teknik membolehkan pembangun C membuat keputusan termaklum dalam tugas pengaturcaraan mereka.
Atas ialah kandungan terperinci Adakah `std::bind` Berlebihan dalam C 14, dan Bilakah Anda Masih Perlu Menggunakannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!