ホームページ >バックエンド開発 >C++ >C++ ラムダ式の構文規則は何ですか?

C++ ラムダ式の構文規則は何ですか?

WBOY
WBOYオリジナル
2024-06-01 17:33:001063ブラウズ

ラムダ式は次の構文を持つ匿名関数です: [キャプチャ リスト] (パラメータ リスト) -> 戻り値の型 {関数本体} キャプチャ リストは周囲の環境からキャプチャされる変数を指定し、パラメータ リストはパラメータ リストを指定します。 、戻り値の型は戻り値の型を指定し、関数本体は関数本体を定義します。キャプチャ変数は参照によってキャプチャされ、キャプチャ リスト、パラメータ リスト、および戻り値の型から型を推測できます。

C++ Lambda 表达式的语法规则是什么?

C++ ラムダ式の構文規則

ラムダ式は、明示的な関数を定義せずに呼び出し可能なオブジェクトを作成できる匿名関数です。構文は次のとおりです:

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

ここで:

  • キャプチャ リスト: 周囲の環境からキャプチャする変数のリストを指定します。
  • パラメータリスト: ラムダ式のパラメータリストを指定します。
  • 戻り値の型: ラムダ式の戻り値の型を指定します。省略できます。その場合、ラムダ式は void を返します。
  • 関数本体: ラムダ式の関数本体を定義します。

いくつかの例を示します:

// Capture 变量 x 并返回 x 的平方
auto square = [](int x) { return x * x; };

// 捕获变量 y 并返回 y 的立方
auto cube = [&](int y) { return y * y * y; };

注:

  • ラムダ式は C++11 以降で使用できます。
  • ラムダ式でキャプチャされた変数は、値としてキャプチャされることが明示的に指定されていない限り、参照によってキャプチャされます。
  • ラムダ式の型は、キャプチャ リスト、パラメータ リスト、戻り値の型に基づいて推測できます。

実際的なケース

以下はラムダ式を使用した簡単な例です:

#include <iostream>
#include <vector>

using namespace std;

int main() {
  // 使用 lambda 表达式对向量中的每个元素平方
  vector<int> numbers = {1, 2, 3, 4, 5};
  for_each(numbers.begin(), numbers.end(), [](int& num) { num *= num; });

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

  // 打印排序后的向量
  for (int num : numbers) {
    cout << num << " ";
  }
  cout << endl;

  return 0;
}

以上がC++ ラムダ式の構文規則は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。