シーンを使用したシンプル0 ---使用し、1つまたは2つの場所
独立した機能が、機能は比較的単純で、プロジェクト全体で一度だけ使用することができます(つまり、多重化が存在しない)ので、今回はラムダ式を使用した場合を考えることができます。
?それは一度だけ使用し、その直接の書き込み、すべてのコードがすぐに目が覚めているので、なぜそれが機能しなければなりませんか? - ラムダは、ローカル変数をキャプチャすることができますので
BOOL check_size(CONST 文字列&S、文字列:: size_typeのSZ) { 戻り s.size()> = SZ。 } // WC:第一个满足サイズ> SZ的元素 自動WC
= find_if(words.begin()、words.end()、[SZ](CONST 文字列&A){ 戻り a.size()> = SZ。 });
機能check_size()は、パラメータfind_ifとして使用することはできません。しかし、また、どのように検討する必要があります
参考ます。https://blog.csdn.net/qq_34199383/article/details/80469780
サイズの0.1比較
// 1.传统方法 の#include <iostreamの> の#include <ベクトル> の#include <アルゴリズム> 使用して 名前空間はstd; BOOL比較(INT&A、INT&B) { 戻り > B。 } INTメイン(ボイド) { int型データ[ 6 ] = { 3、4、12、2、1、6 }。 ベクトル < int型 >テストデータ。 testdata.insert(testdata.begin()、データ、データ + 6。); // ソートアルゴリズムの 分類(testdata.begin()、testdata.end()、比較); // 昇順 リターン 0 ; } / * *** ************************************** * / // 2.lambda表現 する#include <入出力ストリーム> の#include <ベクトル> の#include <アルゴリズム> 使用して 名前空間STD; INTメイン(ボイド) { INT [データ。6 ] = { 3、4。 、12であり、2、1、6 }。 ベクトル < int型 > テストデータ。 testdata.insert(testdata.begin()、データ、データ + 6 )。 ソート(testdata.begin()、testdata.end()、[](INT A、INT B){ 戻り > Bを;}); リターン 0 ; }
ラムダ式の戻り値を受け入れる0.2オート機能
書式#include <iostreamの> の#include <機能> 使用して 名前空間はstdを、 INTメイン(ボイド) { int型、X = 8、Y = 9 。 自動追加 = [](INT A、INT B){ 返す + Bと、}。 std ::関数 < INT(INT、INT)>追加= [=](int型、int型の {B)を返す + B。}。 裁判所未満 << 「を追加します。」<<追加(X、Y)<< ENDL; // 17 COUT << " 追加:" <<追加(X、Y)<< ENDL; // 17 戻り 0 ; }
0.3ラムダ式は、再帰的なアルゴリズムを使用して達成されます
書式#include <iostreamの> の#include <機能> 使用して 名前空間はstdを、 INTメイン(ボイド) { のstd ::関数 < INT(INT)>再帰= [&再帰](int型N){ 戻り N < 2?1:再帰(N - 1)+再帰(N - 2 )。 }。 // 我们来检测下我们的结果 COUT << " 再帰(2):" <<再帰(2)<< ENDL; // 2 COUT <<再帰(3):" <<再帰(3)<< ENDL; // 3 COUT << " 再帰(4):「 <<再帰(4)<< ENDL; // 5 戻り 0 ; }
1.エッセンス:無名のインライン
[キャプチャリスト(パラメータリスト) - > 戻り型 { 関数本体 } // キャプチャリスト取り込みリスト、通常空で定義されたローカル変数のリスト // 端が--return返す設定する必要がラムダ式**
2.あなたは、パラメータリストの戻り値の型を無視することができますが、リストには含まれており、関数本体をキャプチャする必要があります
オートF = [] { 返す 42 ;}
3.キャプチャリスト
自動WC = find_if(words.begin()、words.end()、[SZ](CONST 文字列&A){ 戻り a.size()> = SZ;});
4.可変方法がとら
- []任意の変数を取られていません
- [b]スコープすべての変数は、外部取り出し、機能の本体内の基準として使用します
- [=]範囲外ボディ内のすべての変数、及びコピー機能を講じ
- [=、&フー]範囲外のコピー機能と本体で使用されるすべての変数を採取するが、参照変数fooの使用
- [バー]バー取られ、他の変数が取られていない間の変数は、体重のコピー機能で使用されます
- [これ]は、現在のクラスにこのポインタを取ら。デフォルト&や=を使用している場合は、このオプションを追加します。
参考:
https://www.cnblogs.com/smiler/p/4095723.html
5.戻り値の型:単一のreturn文;マルチステートメントのデフォルトに戻り、ボイド、それ以外の場合はエラーには、戻り値の型を指定する必要があります
// 正しい単一のreturnステートメント 変換((、vi.begin()vi.beginをvi.endを())、[](INT I){ リターン Iの< 0? - ; Iは、Iを}) // エラー。戻り値の型を推論することができない 変換(、)(、)(vi.endをvi.beginをvi.begin()、[](int型I){ IF(I < 0)リターン - I; 他の リターン; I}) // 正しいです戻り型が設定されているのは、エンド 変換(vi.begin()、vi.end()、vi.begin()、[](INT > - I)INT { IF(I < 0)リターン - 、I 他の リターン 私;})
6.bind()
std ::プレースホルダを7.using :: _ 1。