C/C++ における Lambda 関数の意味

WBOY
リリース: 2023-09-02 19:33:08
転載
1428 人が閲覧しました

C/C++ における Lambda 関数の意味

Lambda 関数 - Lambda 関数は、メイン プログラムの範囲外での実装を必要としないインライン関数です。

Lambda 関数は、保存する変数の値として使用することもできます。ラムダは、関数によって呼び出すことができるオブジェクト (ファンクターと呼ばれます) と呼ぶことができます。

コンパイラはラムダ関数の定義に遭遇すると、通常、カスタム ラムダ オブジェクトを作成します。

ラムダ関数には、使用された変数をキャプチャするキャプチャ メソッドがあるなど、通常の関数よりも多くの機能があります。ただし、キャプチャされた変数はオブジェクトのメンバーとして扱われます。

ラムダ関数は「関数オブジェクト」とも呼ばれ、独自のスコープを持ち、通常の関数内のパラメーターとして渡すことができます。関数。 Lambda 関数には独自のライフサイクルがあります。

[ ] - キャプチャ

( ) - パラメータ (オプション)

- 戻り値値 (オプション)

{...} - 関数本体。

lambda 構文

[ ]( int a) -> int { return a-1 ;};
ログイン後にコピー

Capture – Capture は、ラムダ関数が特定のスコープまたはネストされたブロックで使用可能な変数にアクセスできる句です。

利用可能な変数を取得する 2 つのメソッドを使用して特定の値をキャプチャできます:

  • 名前によるオブジェクトのキャプチャ – 名前によるオブジェクトのキャプチャname will オブジェクトのローカルコピーを生成するラムダ関数。

この概念は、次の例で理解できます。 -

int main(){
   set s;
   //Adding the elements to set
   int i=20;
   for_each(s.begin(),s.end(), [i](T& elem){
      cout<<elem.getVal()*i<<endl;
   }
}
ログイン後にコピー

上の例では、ラムダ関数のローカル コピーを作成することによって値が取得されます。

  • 参照によるオブジェクトのキャプチャ – 参照によるオブジェクトのキャプチャにより、ラムダ関数のコンテキストを操作できるようになります。したがって、関数オブジェクトまたはラムダ関数によって取得される値は変更される可能性があります。

次の例でこれを理解できます。

int main(){
   sets;
   //Adding elements to the set
   int result=0;
   for_each(s.begin(),s.end(), [&result](&T elem){ result+= elem.getVal();});
   cout<<result<<endl;
}
ログイン後にコピー

メンバー関数内のラムダ

ラムダ関数は、使用される通常の関数の内部に存在できることがわかります。パラメータとして。たとえば、

class func{
public:
   func(set<T>s): s1(s){}
   void func(){
      remove_if(s1.begin(),s1.end(), [this](int i) ->bool {return (i<level);});
   }
private:
   set<T>s1;
   int result;
};
ログイン後にコピー

以上がC/C++ における Lambda 関数の意味の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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