Rumah >pembangunan bahagian belakang >C++ >Apakah senario penggunaan ungkapan lambda dalam fungsi C++?

Apakah senario penggunaan ungkapan lambda dalam fungsi C++?

王林
王林asal
2024-04-19 14:45:02929semak imbas

Ekspresi Lambda ialah fungsi tanpa nama yang boleh digunakan untuk memudahkan kod, berfungsi sebagai fungsi panggil balik atau fungsi berparameter Kelebihannya termasuk memudahkan kod, mengurangkan redundansi dan meningkatkan fleksibiliti.

C++ 函数的 lambda 표达式的使用场景是什么?

Senario penggunaan ungkapan lambda dalam fungsi C++

Ungkapan lambda ialah fungsi tanpa nama yang boleh ditakrifkan dan digunakan dalam badan fungsi. Tidak seperti fungsi biasa, ungkapan lambda tidak mempunyai nama dan hanya boleh digunakan dalam skop di mana ia ditakrifkan.

Senario penggunaan:

  1. Memudahkan kod: Menggunakan ungkapan lambda boleh memudahkan kod dengan fungsi mudah. Contohnya, kod berikut menggunakan ungkapan lambda untuk menambah setiap elemen dalam senarai sebanyak 1:
#include <iostream>
#include <vector>

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

  // 使用 lambda 表达式增加每个元素
  std::for_each(numbers.begin(), numbers.end(), [](int& n) { n++; });

  // 打印增加后的列表
  for (int num : numbers) {
    std::cout << num << " ";
  }

  return 0;
}
  1. Sebagai fungsi panggil balik: ekspresi lambda boleh dihantar ke fungsi lain sebagai fungsi panggil balik. Sebagai contoh, kod berikut menggunakan ungkapan lambda sebagai fungsi panggil balik untuk mengisih elemen dalam senarai:
#include <iostream>
#include <vector>
#include <algorithm>

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

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

  // 打印排序后的列表
  for (int num : numbers) {
    std::cout << num << " ";
  }

  return 0;
}
  1. Penparameteran fungsi: ekspresi lambda boleh digunakan untuk meparameterkan fungsi. Contohnya, kod berikut mentakrifkan fungsi yang mengambil ungkapan lambda dan melakukan operasi berulang:
#include <iostream>
#include <vector>

void for_each(std::vector<int>& numbers, std::function<void(int&)> operation) {
  for (int& num : numbers) {
    operation(num);
  }
}

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

  // 使用 lambda 表达式参数化 for_each 函数
  for_each(numbers, [](int& n) { n *= n; });

  // 打印平方后的列表
  for (int num : numbers) {
    std::cout << num << " ";
  }

  return 0;
}

Kelebihan:

  • Ringkaskan kod
  • Kurangkan lebihan
  • Tingkatkan fleksibiliti
🎜

Atas ialah kandungan terperinci Apakah senario penggunaan ungkapan lambda dalam fungsi 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