Dalam senario apakah ungkapan lambda C++ sangat berguna?

王林
Lepaskan: 2024-06-05 12:15:00
asal
741 orang telah melayarinya

C++ Lambda 表达式在哪些场景中尤为有用?

C++ Lambda Expressions: Alat berkuasa untuk senario tertentu

Pengenalan

Ekspresi Lambda ialah fungsi tanpa nama yang diperkenalkan dalam C++ yang membolehkan anda mencipta fungsi sebaris pendek. Mereka hebat untuk mengendalikan tugas mudah yang tidak memerlukan pengisytiharan atau penamaan berasingan.

Sintaks Lambda

Ekspresi Lambda menggunakan sintaks berikut:

[capture-list](parameters) -> return-type { body }
Salin selepas log masuk
  • senarai tangkapan: Nyatakan pembolehubah untuk ditangkap.
  • parameter: Nyatakan parameter fungsi.
  • return-type: Nyatakan jenis pemulangan fungsi.
  • badan: Tentukan tingkah laku fungsi.

Penggunaan

Ekspresi Lambda amat berguna dalam senario berikut:

  • Fungsi panggil balik objek: diluluskan sebagai fungsi panggil balik ke fungsi atau objek lain.
  • Algoritma STL: diluluskan sebagai parameter kepada algoritma perpustakaan standard, seperti std::sortstd::find.
  • Pengendalian acara: Menjawab input pengguna atau acara sistem (cth., dalam rangka kerja GUI).
  • Penutupan: Tangkap pembolehubah untuk mencipta penutupan yang berterusan dalam skop di luar fungsi.

Praktikal Case

1. ungkapan Cari nombor pertama yang lebih besar daripada 5:

#include <iostream>
#include <string>

using namespace std;

int main() {
  string str = "hello";
  transform(str.begin(), str.end(), str.begin(), [](char c) { return toupper(c); });
  cout << str << endl;  // 输出:HELLO

  return 0;
}
Salin selepas log masuk

3 Sebagai penutupan

Kod berikut menunjukkan cara membuat penutupan menggunakan ungkapan lambda:

#include <iostream>
#include <vector>

using namespace std;

int main() {
  vector<int> nums = {1, 3, 5, 7, 9};
  auto it = find_if(nums.begin(), nums.end(), [](int n) { return n > 5; });
  if (it != nums.end()) {
    cout << "找到了第一个大于 5 的数字:" << *it << endl;  // 输出:7
  } else {
    cout << "没有找到大于 5 的数字" << endl;
  }

  return 0;
}
Salin selepas log masuk

Nota:

Berbanding dengan fungsi Lambda, terdapat had berikut:

Mereka tidak mempunyai ruang nama bebas.

Mereka tidak boleh dimuat semula.

Mereka tidak boleh mempunyai parameter lalai.

Apabila menggunakan ungkapan lambda, timbangkan kelebihan dan hadnya dengan teliti untuk menentukan sama ada ia adalah pilihan terbaik untuk senario khusus anda.

    Atas ialah kandungan terperinci Dalam senario apakah ungkapan lambda C++ sangat berguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    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
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!