C /C++でのラムダ関数の重要性
ラムダ関数 −ラムダ関数はインライン関数であり、メインプログラムの範囲外での実装は必要ありません。
Lambda関数は、格納する変数によって値として使用することもできます。 Lambdaは、関数(ファンクターと呼ばれる)によって呼び出すことができるオブジェクトとして参照できます。 。
コンパイラーがラムダ関数の定義に遭遇すると、通常、ラムダのカスタムオブジェクトを作成します。
ラムダ関数には、通常の関数よりも多くの機能があります。たとえば、使用された変数をキャプチャするためのキャプチャメソッドがあります。ただし、キャプチャされた変数はオブジェクトのメンバーとして扱われます。
ラムダ関数は、独自のスコープを持ち、通常の関数内でパラメーターとして渡すことができる「関数オブジェクト」と呼ばれることもあります。ラムダ関数には独自の有効期間があります。
[] -キャプチャ
() -パラメータ(オプション)
→ -戻り値(オプション)
{...} -機能本体。
ラムダの構文
[ ]( int a) -> int { return a-1 ;};
キャプチャ –キャプチャは、ラムダ関数がその特定のスコープまたはネストされたブロックで使用可能な変数へのアクセスを許可する句です。
2つの方法を使用して、使用可能な変数の値を取得できます。
-
名前でオブジェクトをキャプチャする –オブジェクトを名前でキャプチャすると、ラムダ関数のローカルコピーが作成されます。
この概念は、次の例で理解できます-
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 ++のmbsrtowcs()関数
この記事では、C++STLでのstd::mbsrtowcs()関数の動作、構文、および例について説明します。 std ::mbsrtowcs()とは何ですか? std ::mbsrtowcs()関数は、C ++ STLに組み込まれている関数であり、ヘッダーファイルで定義されています。 mbsrtowcs()は、最初のバイトが*srcであるヌル終了マルチバイト文字ストリングをワイド文字表現に変換することを意味します。この関数は、変換に応じた値を返します。 構文 size_t mbsrtowcs(wchar_t * pwc、char ** str、size_t n、mbstate_t * p
-
C / C ++のSystem()関数
与えられたタスクは、C / C ++でのsystem()の動作を示すことです。 system()関数は、C /C++標準ライブラリの一部です。コマンドプロセッサまたはオペレーティングシステムの端末で実行できるコマンドを渡すために使用され、完了後に最終的にコマンドを返します。 この関数を呼び出すには、またはを含める必要があります。 構文 構文は次のとおりです- int system(char command) コマンドがエラーなしで実行された場合、この関数はゼロを返します。 例 Input: system(“date”) Output: The current d