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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

lamda表达式和尾置返回类型

發(fā)布時間:2023/12/15 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 lamda表达式和尾置返回类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基本語法

基本形式如下:

[capture](parameters) mutable ->return-type
{body}

[capture]:叫做捕獲說明符,表示一個

mutable: mutable修飾符。默認情況下,lamda函數(shù)總是一個const函數(shù),mutable可以取消其常量性,在使用該修飾符時,參數(shù)列表不能省略(即使參數(shù)為空)。

{body}: 函數(shù)體,與普通函數(shù)的函數(shù)體一樣,不過除了可以使用參數(shù)之外,還可以使用所有捕獲的變量。

我們可以這樣輸出"hello,world"

auto func = [] () { cout <<
"hello,world";};

func();
//nowcallthefunction

變量捕獲與閉包實現(xiàn)

string name;

cin >> name;

[&](){cout << name;}();

lambda函數(shù)能夠捕獲

[] 不截取任何變量[&} 截取外部作用域中所有變量,并作為引用在函數(shù)體中使用[=] 截取外部作用域中所有變量,并拷貝一份在函數(shù)體中使用[=, &foo] 截取外部作用域中所有變量,并拷貝一份在函數(shù)體中使用,但是對foo變量使用引用[bar] 截取bar變量并且拷貝一份在函數(shù)體中使用,同時不截取其他變量[x, &y] x按值傳遞,y按引用傳遞[this] 截取當前類中的this指針。如果已經(jīng)使用了&或者=就默認添加此選項。

看到這,不禁要問,這魔法般的變量捕獲是怎么實現(xiàn)的呢?原來,

最后,lambda函數(shù)的類型是什么呢,答案是std:function。


////////////////////////////////////////////////////////////////////////////////////////////////

為什么需要函數(shù)

匿名函數(shù)是許多編程語言都支持的概念,有函數(shù)體,沒有函數(shù)名。

#include <algorithm>

#include <cmath>

void abssort(float* x, unsigned N) {

std::sort(x, x + N,

// Lambda expression begins

[](float a, float b) {

return std::abs(a) < std::abs(b);

});

}

你可能會問,使用函數(shù)對象不是也可以嗎?是的,函數(shù)對象當然沒問題,自己寫的回調(diào)函數(shù),你可以傳個函數(shù)指針也沒有問題。他們有優(yōu)點也有缺點。函數(shù)對象能維護狀態(tài),但語法開銷大,而函數(shù)指針語法開銷小,卻沒法保存范圍內(nèi)的狀態(tài)。如果你覺得魚和熊掌不可兼得,那你可錯了。

2.尾置返回類型

有時候,當希望編寫一個函數(shù)來接收某個序列容器中返回的一個元素的應用時候,你可能就不太能夠想明白應該如何寫出這個函數(shù)的返回值類型了:

template <typename T>
return_type &getItem(T begin, T end) {
    return *begin; // 返回序列中一個元素的引用
}

這里的return_type應該怎么寫呢?事實上,我們可能會想到使用decltype()來獲得這個類型,但是,編譯器在讀到這個函數(shù)定義的時候,begin 甚至還沒有出現(xiàn),這時候我們似乎沒有任何辦法直接在返回類型的時候?qū)懴逻@個返回類型。

C++11 提供了一種新的書寫返回值的方式,那就是將返回類型尾置。尾置的返回類型允許我們在參數(shù)列表之后申明返回的類型,我們的代碼可以寫成:

template <typename T>
auto &getItem(T begin, T end) -> decltype(*begin) {
    return *begin; // 返回序列中一個元素的引用
}

其中,我們使用 decltype 告知了編譯器返回類型與參數(shù)表中的返回類型相同,而 decltype 會自動推斷為元素類型的引用,完成了我們的需求。



總結(jié)

以上是生活随笔為你收集整理的lamda表达式和尾置返回类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 老色批网站 | 91av综合| 欧美综合精品 | 美女福利视频网 | 天天干天天干天天干 | 精品人妻人人做人人爽夜夜爽 | 免费午夜激情 | 亚洲精品白浆 | 偷拍亚洲视频 | 中国性老太hd大全69 | 国产男女猛烈无遮挡 | 色图自拍 | www.一区二区 | 欢乐谷在线观看免费播放高清 | 性毛片| 国产精品探花视频 | 久久91精品国产 | av电影在线观看不卡 | 在线播放国产视频 | 日本三级一区 | 国产97在线 | 亚洲 | 亚洲网在线观看 | 国产又粗又长又硬免费视频 | 四虎一国产精品一区二区影院 | aaa天堂| 亚洲人成电影在线播放 | 激情内射人妻1区2区3区 | 98国产精品| 精品爆乳一区二区三区无码av | 亚洲国产欧美一区二区三区深喉 | 麻豆视频免费版 | 欧美夫妻性生活视频 | 波多野结衣不卡视频 | 成人欧美一区二区三区黑人 | 激情网络| 亚洲天堂色 | 国产精品成人免费 | 国产精品免费观看视频 | 中文在线a√在线 | 亚洲国产免费av | 日韩欧美一卡二卡 | 朝桐光av在线一区二区三区 | 丰满肥臀噗嗤啊x99av | 欧美无极品 | 国产21页| 欧美性受xxxx黒人xyx性爽 | 三上悠亚一区二区在线观看 | 深喉口爆一区二区三区 | 狠狠干影院 | www.一区二区三区 | 欧美三级a做爰在线观看 | 欧美成人a∨高清免费观看 国产精品999视频 | 四虎永久在线 | 亚洲少妇xxx | 中文字幕在线观看第二页 | jizz日本在线观看 | 国产高清毛片 | 色综合久久中文字幕无码 | 亚洲色图欧美在线 | 日韩一区二区在线看 | 国产男男chinese网站 | 欧美综合视频 | 亚洲jizzjizz日本少妇 | а√天堂8资源在线官网 | 少妇一级淫片免费放中国 | 妇女一级片 | 亚洲国产精品久久久久久6q | 天天综合人人 | 四虎免看黄 | 亚洲国产精品天堂 | 全国男人的天堂网 | 亚洲AV无码成人精品区在线观 | 国产真实乱人偷精品 | 伊人精品在线视频 | 粉嫩av懂色av蜜臀av分享 | 亚洲 高清 成人 动漫 | 色悠久| 国产又色又爽又高潮免费 | 网站黄在线 | 六月婷婷综合网 | 国产欧美视频一区二区三区 | 69视频免费 | 亚洲av无码潮喷在线观看 | 亚洲电影一区二区 | 成av人在线| 岛国视频一区 | 婷婷午夜| 强辱丰满人妻hd中文字幕 | 日韩xxx视频 | 老色批影视| 久久伊人一区 | 亚洲v国产v | 少妇3p视频| 天天操天天爽天天射 | 国产精品27p | 久久精品国产99国产精品 | 亚洲第一二三四区 | 自拍视频在线播放 | 爱豆国产剧免费观看大全剧集 |