日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

as my sql 后面加表达式_Lambda 表达式有何用处?如何使用?

發布時間:2024/9/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 as my sql 后面加表达式_Lambda 表达式有何用处?如何使用? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++11推出了新的lambda表達式,這是相當好用的東西。

lambda表達式基本用法

/*返回一個數值*/

int main() {

auto str = [] {return 54; };

//auto str = []() -> int {return 54; };這里還可以指定返回值類型為int但也可以不用指定

cout << str() << endl;//str()會返回一個54

}

/*通過調用來實現一個簡短的函數*/

int main() {

auto str = [](int a, int b) {return a > b ? a : b; };

cout << str(5,3) << endl;

}

/*

利用[]可以調用外部的變量可以在函數體內使用

[=] 通過值捕捉所有變量

[&] 通過引用捕捉所有變量

[value] 通過值捕捉value,不捕捉其它變量

[&value] 通過引用捕捉value,不捕捉其它變量

[=, &value] 默認通過值捕捉,變量value例外,通過引用捕捉

[&, value] 默認通過引用捕捉,變量value例外,通過值捕捉

*/

int main() {

int i = 0;

auto str = [&i]() {

for (int j = 0; j < 10; j++) i += j;

};

str();

cout << i << endl;

}

lambda表達式在sort中的使用

sort可以通過指定的函數來替換排序的規則

#include

#include

#include

using namespace std;

int sor(int a,int b) {

return a > b ? a : b;

}

int main() {

vector a = { 1,2,3,4,5,6,7,8,9,10 };

sort(a.begin(), a.end(), sor);

for (auto v : a) cout << v << endl;

}

而當我們引用lambda表達式的時候我們就可以直接這么用

#include

#include

#include

using namespace std;

int main() {

vector a = { 1,2,3,4,5,6,7,8,9,10 };

sort(a.begin(), a.end(), [](int a, int b) {return a > b ? a : b; });//可以將其放在函數里作為一個函數表達式

for (auto v : a) cout << v << endl;

}

我們還可以用lambda作為函數指針參數

#include

#include

using namespace std;

int test1(int i) {

return i+i;

}

void test(int (*poj)(int)) {

for (int i = 0; i < 10; i++) {

cout << poj(i)<

}

}

int main() {

test(test1);

}

這個方法看著挺好,但是當我們有更多的需求的時候就要定義更多的無用函數就會很麻煩,所以這里也可以運用lambda的表達式來做

auto test =[] (auto poj) {//這里也可以使用Lambda表達式來做

//void test(int (*poj)(int)) {

for (int i = 0; i < 10; i++) {

cout << poj(i) << endl;

}

};

int main() {

test([](int i) {return i + i; });

test([](int i) {return i - i; });

test([](int i) {return i * i; });

test([](int i) {return i / i; });

}

我們還可以通過Lambda組合多個函數

這種方法可以用來組合多個通過一個函數來調用多個函數,但如果想要調用其他函數就要重寫fun方法

#include

#include

#include

using namespace std;

void str(int &i) {

cout << i + 10 << endl;

}

void sss(int &i) {

cout << i - 10 << endl;

}

void fun(int a) {

str(a);

sss(a);

}

int main() {

int srt = 50;

fun(srt);

}

用函數指針,不夠簡潔,而且每次都要指定函數參數以及函數的指針

#include

#include

#include

using namespace std;

void str(int i) {

cout << i + 10 << endl;

}

void sss(int i) {

cout << i - 10 << endl;

}

void fun(int a,void (*f1)(int),void (*f2)(int)) {

f1(a);

f2(a);

}

int main() {

int srt = 50;

fun(srt,str,sss);

}

而當我們采用lambda表達式

#include

#include

#include

using namespace std;

void str(int i) {

cout << i + 10 << endl;

}

void sss(int i) {

cout << i - 10 << endl;

}

auto fun1 = [](auto f1, auto f2) {

return [=](int a) {

f1(a);

f2(a);

};

};

int main() {

int srt = 50;

auto f= fun1(str, sss);

f(srt);/*而且這里還可以指定調用的參數,組合完可以當一個函數來調用*/

}

總結

以上是生活随笔為你收集整理的as my sql 后面加表达式_Lambda 表达式有何用处?如何使用?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。