Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah ungkapan C++ Lambda mengembalikan hasil?

Bagaimanakah ungkapan C++ Lambda mengembalikan hasil?

WBOY
WBOYasal
2024-06-04 10:24:57474semak imbas

C++ Lambda ungkapan boleh menggunakan pernyataan pulangan untuk mengembalikan hasil: Sintaks: [capture-list] (parameter) -> nombor ganjil dan hitung Jumlahnya: int sum_odd = std:: accumulate(numbers.begin(), numbers.end(), 0, [](int sum, int num) { jika (bilangan % 2 == 1) { pulangan jumlah + nombor; } jumlah pulangan; });

C++ Lambda 表达式如何返回结果?

C++ Ungkapan Lambda: Mekanisme untuk Mengembalikan Hasil

Ungkapan Lambda ialah fungsi tanpa nama dalam C++ yang boleh digunakan untuk mewakili blok kod pendek dan ringkas. Kita boleh mengembalikan hasil dalam ungkapan Lambda dengan menggunakan pernyataan return dalam sintaksnya. return 语句。

语法:

[capture-list] (parameters) -> return-type {
  // 函数体
  return expression; // 返回结果
};

实战案例:

假设我们有一个容器 numbers,我们需要返回该容器中所有奇数的总和。我们可以使用 Lambda 表达式如下:

#include <vector>
#include <algorithm>

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

  // 使用 Lambda 表达式过滤奇数
  int sum_odd = std::accumulate(numbers.begin(), numbers.end(), 0, [](int sum, int num) {
    if (num % 2 == 1) {
      return sum + num;
    }
    return sum;
  });

  std::cout << "奇数总和:" << sum_odd << std::endl;

  return 0;
}

说明:

  • 在此 Lambda 表达式中,[sum, num] 是捕获列表,它包含我们需要的外部变量。
  • (sum, num) 是参数列表,它接收两个参数:sum 为累加值,num 为容器中的当前值。
  • -> int 指定了返回类型,在本例中为 int
  • 函数体使用条件语句检查 num 是否为奇数,如果是,则将其添加到 sum 中并返回,否则返回 sum
  • 最后,std::accumulate 函数将 Lambda 表达式用作二元运算符,将容器中的所有奇数累加到 sum_odd
Sintaks:

rrreee🎜🎜Kes praktikal: 🎜🎜🎜Andaikan kita mempunyai nombor bekas, dan kita perlu mengembalikan jumlah semua nombor ganjil dalam bekas. Kita boleh menggunakan ungkapan Lambda seperti berikut: 🎜rrreee🎜🎜Penjelasan: 🎜🎜
  • Dalam ungkapan Lambda ini, [sum, num] ialah senarai tangkapan, yang mengandungi apa yang kita perlukan luaran pembolehubah. 🎜
  • (sum, num) ialah senarai parameter, yang menerima dua parameter: sum ialah nilai terkumpul dan num ialah nilai dalam bekas Nilai semasa. 🎜
  • -> int menentukan jenis pulangan, dalam kes ini int. 🎜
  • Ibu fungsi menggunakan pernyataan bersyarat untuk menyemak sama ada num ialah nombor ganjil. Jika ya, tambahkannya pada sum dan kembalikannya, jika tidak, kembalikan sum
kod>. 🎜
  • Akhir sekali, fungsi std::accumulate menggunakan ungkapan Lambda sebagai pengendali binari untuk mengumpul semua nombor ganjil dalam bekas ke dalam sum_odd. 🎜🎜🎜Dengan kaedah di atas, kita boleh dengan mudah mengembalikan hasil daripada fungsi menggunakan ungkapan Lambda. 🎜
  • Atas ialah kandungan terperinci Bagaimanakah ungkapan C++ Lambda mengembalikan hasil?. 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