首頁  >  文章  >  後端開發  >  如何用 C++ lambda 表達式取代函數指標?

如何用 C++ lambda 表達式取代函數指標?

PHPz
PHPz原創
2024-04-17 16:24:02337瀏覽

以 lambda 表達式取代函數指標可提升可讀性、減少樣板程式碼並提高重用性。具體而言,lambda 表達式採用以下語法:[capture list](parameter list) -> return type { body},並可用於對向量排序等實戰案例中,提升程式碼簡潔性和可維護性。

如何用 C++ lambda 表达式替换函数指针?

以C Lambda 表達式取代函數指標

Lambda 表達式在C 11 中引入,提供了一個簡單的方法來定義匿名函數或函數指標。用lambda 表達式取代函數指標有很多好處,包括:

  • 可讀性更強
  • 減少樣板程式碼
  • ##提高程式碼重用性

#語法

lambda 表達式的語法如下:

[capture list](parameter list) -> return type { body }

  • capture list:一個圓括號內的逗號分隔的變數列表,這些變數將從lambda 表達式所在的作用域中捕獲。
  • parameter list:一個圓括號內的逗號分隔的參數清單。
  • return type:函數的回傳值類型(可選)。
  • body:函數的主體,使用花括號括起來。

實例

以下是一個用lambda 表達式取代函數指標的範例:

// 函数指针方式
int compare(int a, int b) { return a - b; }

// Lambda 表达式方式
auto compare = [](int a, int b) { return a - b; };

實戰案例:排序向量

我們可以在一個實戰案例中看到lambda 表達式的優勢:

#include <vector>
#include <algorithm>

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

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

  // 打印排序后的向量
  for (int x : v) {
    std::cout << x << " ";
  }

  return 0;
}

在這個案例中,lambda 表達式用於定義一個比較函數,該函數用於對向量進行排序。無需定義單獨的函數,程式碼更簡潔易懂。

以上是如何用 C++ lambda 表達式取代函數指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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