<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## Lambda 表達式 Lambda 表達式的基本語法如下: ``` [捕獲列表](參數列表) mutable(可選) 異常屬性 -&gt; 返回類型 { // 函數體 } ``` ### 值捕獲 ``` int value = 1; auto lam = [value]() { return value; }; value = 2; // value 改變不影響 lamdbda 表達式的值 int lam1 = lam(); std::cout << lam1; // 1 ``` ### 引用捕獲 ``` int value = 1; auto lam = [&value]() { return value; }; value = 2; // value 改變影響 lamdbda 表達式的值 int lam1 = lam(); std::cout << lam1; // 2 ``` ### 隱式捕獲 手動書寫捕獲列表有時候是非常復雜的,可以在捕獲列表中寫一個`&`或`=`向編譯器聲明采用引用捕獲或者值捕獲. ``` [] 空捕獲列表 [name1, name2, ...] 捕獲一系列變量 [&] 引用捕獲, 讓編譯器自行推導引用列表 [=] 值捕獲, 讓編譯器自行推導值捕獲列表 ``` 引用捕獲 ``` int value = 1; auto lam = [&]() { return value; }; value = 2; // value 改變影響 lamdbda 表達式的值 int lam1 = lam(); std::cout << lam1; // 2 ``` 值捕獲 ``` int value = 1; auto lam = [=]() { return value; }; value = 2; // value 改變影響 lamdbda 表達式的值 int lam1 = lam(); std::cout << lam1; // 1 ``` ### 表達式捕獲 可對 捕獲列表的值進行獲取 ``` auto lam = [v1 = 1, v2 = 2](int t )-> int { return v1 + v2+t; }; std::cout << lam(3); // 3 return 0; ``` ### 泛型 Lambda lambda 不支持模版函數,但是可通過 auto 實現 ``` auto a = [](auto x, auto y) { return x+y ; }; std::cout << a(1.1, 2.2); //3.3 ``` ### 函數對象包裝器-std::function ``` #include <functional> #include <iostream> int foo(int para) { return para; } int main() { // std::function 包裝了一個返回值為 int, 參數為 int 的函數 std::function<int(int)> func = foo; int important = 10; std::function<int(int)> func2 = [&](int value) -> int { return 1+value+important; }; std::cout << func(10) << std::endl; std::cout << func2(10) << std::endl; } ``` ### std::bind 和 std::placeholder 參數分多次傳入 ``` #include <functional> #include <iostream> int foo(int a, int b, int c) { return a + b + c; } int main() { // 將參數1,2綁定到函數 foo 上, // 但使用 std::placeholders::_1 來對第一個參數進行占位 auto bindFoo = std::bind(foo, std::placeholders::_1, 1,2); // 這時調用 bindFoo 時,只需要提供第一個參數即可 bindFoo(1); } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看