C++ での関数ラムダ式の記述仕様は何ですか?

WBOY
リリース: 2024-04-11 12:54:01
オリジナル
920 人が閲覧しました

C 関数ラムダ式を記述するための標準構文は次のとおりです: [capture](parameters) -> return_type { // Function body}、ここで、capture は外部変数のキャプチャ、parameters は関数パラメータ、return_type は関数のパラメータです。関数の戻り値の型。そのタイプはキャプチャ リストとパラメータ リストに従って分類されます: すべての外部変数をキャプチャ、パラメータなし: 自動タイプ、特定の外部変数をキャプチャ、パラメータなし: 自動タイプ (削減可能)、キャプチャなし、パラメータ: 関数タイプ。ラムダ式は一時関数オブジェクトを作成するために使用され、変数または関数ポインターに割り当てたり、引数として直接渡すことができます。

C++ 函数lambda表达式的写法规范是什么?

C関数ラムダ式記述仕様

構文:

[capture](parameters) -> return_type {
  // 函数体
}
ログイン後にコピー

このうち:

  • ##capture: 外部変数をキャプチャします。オプション、デフォルトは [&] (すべての外部変数をキャプチャします)
  • parameters : 関数のパラメーター、オプション
  • #return_type: 関数の戻り値の型、オプション

#ラムダ式のタイプ:

ラムダ式は匿名関数タイプに属します。そのタイプはキャプチャ リストとパラメータ リストによって異なります。

    すべての外部変数をキャプチャします。パラメータはありません。
  • auto タイプ
  • 特定の外部変数をキャプチャします。パラメータはありません。
  • auto 型 (削減可能)
  • キャプチャなし、パラメーターあり:
  • function Type

使用仕様:

    ラムダ式は、一時関数オブジェクトを作成するために使用されます。
  • 変数または関数ポインターに割り当てることも、パラメーターとして直接渡すこともできます。
  • キャプチャされた外部変数は Lambda 式でアクセスできますが、(参照によってキャプチャされない限り) 変更することはできません。
  • this Lambda 式のポインターは、それが作成されたコンテキストを指します。

実際のケース:

// 捕获所有外部变量,无参数
auto lambda1 = []() {
  // 可以访问外部变量
  std::cout << "Lambda 1: " << x << std::endl;
};

// 捕获特定外部变量,无参数
int x = 10;
auto lambda2 = [x]() {
  // 只可以访问捕获的外部变量 x
  std::cout << "Lambda 2: " << x << std::endl;
};

// 无捕获,有参数
auto lambda3 = [](int y) {
  // 没有捕获外部变量,y 为函数参数
  std::cout << "Lambda 3: " << y << std::endl;
};

int main() {
  lambda1();
  lambda2();
  lambda3(20);

  return 0;
}
ログイン後にコピー

出力:

Lambda 1: 10
Lambda 2: 10
Lambda 3: 20
ログイン後にコピー

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

関連ラベル:
c++
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート