Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggantikan penunjuk fungsi dengan ungkapan lambda C++?

Bagaimana untuk menggantikan penunjuk fungsi dengan ungkapan lambda C++?

PHPz
PHPzasal
2024-04-17 16:24:02377semak imbas

Menggantikan penunjuk fungsi dengan ekspresi lambda meningkatkan kebolehbacaan, mengurangkan kod plat dandang dan meningkatkan kebolehgunaan semula. Khususnya, ungkapan lambda menggunakan sintaks berikut: [senarai tangkapan](senarai parameter) ->

如何用 C++ lambda 表达式替换函数指针?

Gantikan penuding fungsi dengan ungkapan Lambda C++

Ekspresi Lambda telah diperkenalkan dalam C++11 dan menyediakan cara mudah untuk mentakrifkan fungsi tanpa nama atau penunjuk fungsi. Menggantikan penunjuk fungsi dengan ungkapan lambda mempunyai banyak faedah, termasuk:

  • Kebolehbacaan yang lebih baik
  • Kod boilerplate yang dikurangkan
  • Kebolehgunaan semula kod yang dipertingkatkan

Sintaks

sintaks

untuk amb.

[capture list](parameter list) -> return type { body }
  • senarai tangkapan: Senarai pembolehubah yang dipisahkan koma yang disertakan dalam kurungan yang akan ditangkap daripada skop ungkapan lambda.
  • senarai parameter: Senarai parameter yang dipisahkan koma dalam kurungan.
  • jenis pulangan: Jenis nilai pulangan fungsi (pilihan).
  • badan: Badan fungsi, disarung dengan pendakap kerinting.

Contoh

Berikut ialah contoh menggantikan penunjuk fungsi dengan ungkapan lambda:

// 函数指针方式
int compare(int a, int b) { return a - b; }

// Lambda 表达式方式
auto compare = [](int a, int b) { return a - b; };

Kes praktikal: menyusun vektor

Kita boleh lihat kelebihan lambree: kes ini, ungkapan lambda digunakan untuk menentukan fungsi perbandingan yang digunakan untuk mengisih vektor. Tidak perlu mentakrifkan fungsi berasingan, dan kodnya lebih ringkas dan mudah difahami.

Atas ialah kandungan terperinci Bagaimana untuk menggantikan penunjuk fungsi dengan ungkapan lambda C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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