首頁  >  文章  >  後端開發  >  C++ 匿名函式的用法和特點

C++ 匿名函式的用法和特點

PHPz
PHPz原創
2024-04-19 09:03:02735瀏覽

匿名函數,又稱為lambda表達式,是一種不指定名稱的函數,用於一次性使用或傳遞函數指標。特點有:匿名性、一次性使用、閉包、回傳類型推論。實戰中常用於排序或其他一次性函數呼叫。

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

C 匿名函數的用法與特性

匿名函數,也稱為Lambda表達式,是一種在定義時不指定名稱的函數,通常用於定義一次性使用的函數,或在需要傳遞函數指標時使用。

語法

Lambda表達式的基本語法如下:

[capture list] (parameters) -> return type { function body }
  • capture list: 用於擷取外部變量,類似於函數中的auto關鍵字,可以指定要捕獲的變數名稱或引用。
  • parameters: Lambda表達式的參數清單。
  • return type: Lambda表達式的回傳類型。
  • function body: Lambda表達式的函數體。

特點

  • 匿名性: Lambda表達式沒有名稱,只能透過函數指標或其他語法結構引用。
  • 一次使用: Lambda表達式通常用於一次性使用,定義後一般不會再次呼叫。
  • 閉包: Lambda表達式可以捕捉外部變量,形成閉包,可以使用外部變數的值。
  • 回傳類型推斷: Lambda表達式的回傳類型可以由編譯器推斷,除非明確指定。

實戰案例

以下是使用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;
}

輸出:

1 2 3 4 5

以上是C++ 匿名函式的用法和特點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn