Rumah > pembangunan bahagian belakang > C++ > Lambdas lwn. Bind dalam C : Bilakah Anda Harus Memilih Setiap Satu?

Lambdas lwn. Bind dalam C : Bilakah Anda Harus Memilih Setiap Satu?

Susan Sarandon
Lepaskan: 2024-11-01 02:49:28
asal
788 orang telah melayarinya

Lambdas vs. Bind in C  : When Should You Choose Each?

Lambdas vs. Bind dalam C : Polimorfisme dan Kecekapan

Apabila membandingkan penggunaan C 0x lambdas dan std::bind untuk tugasan yang serupa , pilihan antara kedua-duanya boleh dipengaruhi oleh faktor seperti polimorfisme dan kecekapan.

Bind vs. Lambda secara Terperinci

Pertimbangkan contoh berikut di mana kedua-dua lambda dan bind digunakan untuk menjana nombor rawak menggunakan pengedaran dan enjin:

// Using lambda
auto dice = [&]() { return distribution(engine); };

// Using bind
auto dice = bind(distribution, engine);
Salin selepas log masuk

Polymorphism

Tidak seperti lambdas, yang monomorfik (iaitu, mempunyai jenis tetap), std: :bind membenarkan tingkah laku polimorfik. Ini bermakna bind boleh digunakan untuk mencipta fungsi dengan jenis yang tidak diketahui, seperti yang ditunjukkan di bawah:

struct foo {
  typedef void result_type;

  template <typename A, typename B>
  void operator()(A a, B b) {
    cout << a << ' ' << b;
  }
};

auto f = bind(foo(), _1, _2);
f("test", 1.2f); // will print "test 1.2"
Salin selepas log masuk

Dalam contoh ini, jenis a dan b disimpulkan pada masa jalan apabila f digunakan. Fleksibiliti ini tidak tersedia dengan lambda.

Kecekapan

Secara amnya, lambda cenderung lebih cekap daripada mengikat apabila pembolehubah yang ditangkap digunakan mengikut nilai. Ini kerana lambdas menangkap pembolehubah secara langsung, manakala bind mencipta objek penutupan yang merujuk pembolehubah yang ditangkap. Walau bagaimanapun, bind mungkin menawarkan kelebihan apabila pembolehubah yang ditangkap adalah besar atau apabila fungsi dipanggil dengan kerap.

Kesimpulan

Pilihan antara lambdas dan bind bergantung pada keperluan khusus daripada permohonan itu. Lambdas menyediakan polimorfisme dan cekap untuk menangkap pembolehubah kecil jenis nilai. Bind menawarkan fleksibiliti yang lebih besar dan mungkin lebih baik apabila berurusan dengan fungsi yang besar atau sering dipanggil.

Atas ialah kandungan terperinci Lambdas lwn. Bind dalam C : Bilakah Anda Harus Memilih Setiap Satu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan