C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++ 11のラムダ式とは何ですか?


C ++ STLには、std::for_eachのような便利なジェネリック関数が含まれています。残念ながら、特に適用したいファンクターが特定の機能に固有である場合は、使用するのが非常に面倒になる可能性があります。したがって、作成するこの関数は、その1つの場所で使用されている名前空間に含まれます。これに対する解決策は、無名関数を使用することです。

C++ではC++11にラムダ式が導入され、無名関数を作成できるようになりました。

#include<iostream>
#include<vector>
#include <algorithm> // for_each

using namespace std;

int main() {
   vector<int> myvector;
   myvector.push_back(1);
   myvector.push_back(2);
   myvector.push_back(3);

   for_each(myvector.begin(), myvector.end(), [](int x) {
      cout << x*x << endl;
   });
}
出力 これにより出力が得られます-

1
4
9

(int x)は、ラムダ式が呼び出される引数を定義するために使用されます。 []は、ローカルスコープからラムダの内部スコープに変数を渡すために使用されます。これは変数のキャプチャと呼ばれます。これらの式は、単純な場合、それらの型を自動的に推測できます。次の構文を使用して、型情報を明示的に提供することもできます-

構文
[](int x) -> double {
   return x/2.0;
}

C ++ラムダを詳細に調べるには、このStackOverflowスレッドにアクセスしてください-https://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11




  1. C#での列挙とは何ですか?

    列挙型は、年、製品、月、季節などの名前付き定数のセットを格納する列挙型です。 列挙型定数のデフォルト値は0から始まり、増分します。定数のセットが固定されており、簡単にトラバースできます。 例を見てみましょう。 このように列挙型を設定しました- public enum Vehicle { Car, Bus, Truck } 以下は完全な例です- 例 using System; public class Demo {    public enum Vehicle { Car, Bus, Truck }    public static void

  2. Pythonのラムダバインディングとは何ですか?

    プログラムまたは関数ステートメントが実行されると、仮パラメーターの現在の値が(スタックに)保存され、ステートメントのスコープ内で、呼び出しで行われた実際の引数の値にバインドされます。ステートメントが終了すると、これらの仮引数の元の値が復元されます。このプロトコルは完全に再帰的です。ステートメントの本文内で、正式なパラメーターが新しい値に再度バインドされるようにする何かが行われた場合、ラムダバインドスキームは、これがすべて整然と行われることを保証します。 xのバインディングは1つだけです。x=5を実行すると、既存のバインディングの値が変更されるだけです。そのため、デフォルトのパラメーターは、ラ