Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penggunaan dan ciri-ciri fungsi tanpa nama C++

Penggunaan dan ciri-ciri fungsi tanpa nama C++

PHPz
PHPzasal
2024-04-19 09:03:02748semak imbas

Fungsi tanpa nama, juga dikenali sebagai ungkapan lambda, ialah fungsi tanpa menyatakan nama, digunakan untuk kegunaan sekali atau menghantar penunjuk fungsi. Ciri termasuk: tidak mahu dikenali, penggunaan sekali sahaja, penutupan, inferens jenis pulangan. Dalam amalan, ia sering digunakan untuk mengisih atau panggilan fungsi satu masa yang lain.

C++ 匿名函数的用法和特点

Penggunaan dan ciri-ciri fungsi tanpa nama C++

Fungsi tanpa nama, juga dipanggil ungkapan Lambda, ialah fungsi yang tidak menentukan nama apabila ia ditakrifkan Ia biasanya digunakan untuk mentakrifkan fungsi penggunaan sekali sahaja, atau dalam Digunakan apabila penunjuk fungsi perlu dihantar.

Tatabahasa

Sintaks asas ungkapan Lambda adalah seperti berikut:

[capture list] (parameters) -> return type { function body }
  • capture list: digunakan untuk menangkap pembolehubah luaran, serupa dengan kata kunci auto dalam fungsi, anda boleh tentukan nama pembolehubah ditangkap.
  • parameter: Senarai parameter ungkapan Lambda.
  • jenis pemulangan: Jenis pemulangan ungkapan Lambda.
  • fungsi badan: Badan fungsi ekspresi Lambda.

Ciri

  • Tanpa Nama: Ungkapan Lambda tidak mempunyai nama dan hanya boleh dirujuk melalui penunjuk fungsi atau struktur sintaks lain.
  • Penggunaan sekali: Ungkapan Lambda biasanya digunakan untuk penggunaan sekali dan secara amnya tidak akan dipanggil semula selepas ditentukan.
  • Penutupan: Ungkapan Lambda boleh menangkap pembolehubah luaran untuk membentuk penutupan, dan nilai pembolehubah luaran boleh digunakan.
  • Inferens jenis pengembalian: Jenis pengembalian ungkapan lambda boleh disimpulkan oleh pengkompil melainkan dinyatakan secara eksplisit.

Kes praktikal

Berikut ialah contoh pengisihan vektor menggunakan ungkapan Lambda:

#include <vector>
#include <algorithm>

int main() {
  std::vector<int> vec = { 1, 3, 2, 5, 4 };

  // 使用Lambda表达式对向量排序
  std::sort(vec.begin(), vec.end(), [](int a, int b) { return a < b; });

  // 输出排序后的向量
  for (auto& elem : vec) {
    std::cout << elem << " ";
  }
  std::cout << std::endl;

  return 0;
}

Output:

1 2 3 4 5

Atas ialah kandungan terperinci Penggunaan dan ciri-ciri fungsi tanpa nama 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