lambdas c with examples
C ++でのラムダ式について簡単に説明します。
ラムダ式は、C ++ 11以降で導入されたC ++の最新の概念です。
このチュートリアルでは、C ++のラムダについて学習します。また、プログラムでラムダを定義して使用する方法についても説明します。
=> ここで完全なC ++トレーニングシリーズを確認してください。
学習内容:
ラムダ式/関数
ラムダは、一般的に呼ばれているように、基本的に、関数内または関数呼び出しステートメントでさえ使用できるコードの小さなインラインスニペットです。名前が付けられたり、再利用されたりすることはありません。
ラムダを「自動」として宣言し、プログラムのどこでも使用できます。
ラムダの使い方/書き方は?
ラムダを定義する一般的な構文は次のとおりです。
Android携帯でネットワークセキュリティキーを見つける方法
(Capture clause) (parameter_list) mutable exception ->return_type { Method definition; }
キャプチャクロージャ :C ++仕様によるLambdaイントロデューサー。
パラメータリスト :ラムダ宣言とも呼ばれます。オプションであり、メソッドのパラメータリストに似ています。
可変 :オプション。値による呼び出しによってキャプチャされた変数を変更できるようにします。
例外 :例外仕様。オプション。 「noexcept」を使用して、ラムダが例外をスローしないことを示します。
Return_type :オプション。コンパイラーは、式の戻り値の型を独自に推測します。ただし、ラムダがより複雑になると、コンパイラーが戻り値の型を推測できない可能性があるため、戻り値の型を含めることをお勧めします。
メソッド定義 :ラムダボディ。
銀行アプリケーションのサンプルテストケース
ラムダ定義のキャプチャ句は、キャプチャされる変数と、それらが参照によってキャプチャされるか値によってキャプチャされるかを指定するために使用されます。
空のキャプチャクロージャ()は、ラムダが変数を使用していないことを示します。つまり、ラムダはローカルの変数にのみアクセスできます。
「capture-default」モードは、Lambdaで参照されている変数の外部をキャプチャする方法を示します。
- キャプチャクロージャ(&)は、変数が参照によってキャプチャされることを意味します。
- キャプチャクロージャ(=)は、変数が値によってキャプチャされることを示します。
キャプチャデフォルトとキャプチャ句がある場合、その特定のキャプチャのキャプチャに識別子を含めることはできません。&識別子を含めることができます。同様に、capture句にcapture-default =が含まれている場合、capture句にform = identifierを含めることはできません。また、識別子または「this」をキャプチャ句に複数回表示することはできません。
これは、次の例から明らかです。
(&sum, sum_var) //OK, explicitly specified capture by value (sum_var, &sum) //ok, explicitly specified capture by reference (&, &sum_var) // error, & is the default still sum_var preceded by & (i, i) //error, i is used more than once
ここで、sum、sum_var、およびIは、ラムダでキャプチャおよび使用される変数です。
以下に、C ++でのラムダ式の基本的な例を示します。
#include #include using namespace std; int main() { auto sum = ()(int a, int b) { return a + b; }; cout <<'Sum of two integers:'<< sum(5, 6) << endl; return 0; }
出力:
xmlファイルを開く方法
2つの整数の合計:11
ここに、2つの値の合計を計算するためのインラインラムダ式があります。値aとbのタイプを整数として指定しました。
上記のコードの問題の1つは、整数に対してのみ機能することです。プログラムの後半で、2つのdoubleや文字列、またはその他のタイプを追加する場合は、それらの数のラムダが必要になります。これはプログラミングの効率的な方法ではありません。
テンプレートパラメータを使用することで、この問題を克服できます。これにより、ラムダはすべてのデータ型に対して一般化されます。これはC ++ 14以降で行われます。
したがって、上記のプログラムは次のように変更されます。
#include #include using namespace std; int main() { // generalized lambda auto sum = ()(auto a, auto b) { return a + b; }; cout <<'Sum(5,6) = '<< sum(5, 6) << endl; // sum of two integers cout <<'Sum(2.0,6.5) = '< 出力:
Sum(5,6)= 11
Sum(2.0,6.5)= 8.5
Sum((string(“ SoftwareTesting”)、string(“ help.com”))= SoftwareTestinghelp.com
したがって、このプログラムでは、任意のタイプの2つのオブジェクトの合計を見つけるために使用できる汎用ラムダ合計を使用しました。パラメータのデータ型がデータに基づいて推定されることを示すために、「auto」キーワードを使用していることに注意してください。
このラムダの使用法を示すために、int、float、stringの3つの異なるデータ型で使用しました。出力から、データの種類に応じて合計演算が実行されていることがわかります。 例えば、 文字列パラメーターをラムダ合計に指定すると、2つの文字列が連結されます。
結論
C ++でのラムダ式に関するこのチュートリアルは終了しました。これはC ++の最新の概念であり、コードの小さなスニペットをインラインで実行する必要がある場合に非常に役立ちます。ラムダを汎用にして、すべてのデータ型に使用することもできます。
今後のチュートリアルでは、時間、標準の入出力、ロギングなど、C ++の追加トピックのいくつかについて説明します。
=> ここで人気のあるC ++トレーニングシリーズを読んでください。
推奨読書