亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

??C++11系列學(xué)習(xí)之Lambda表達(dá)式

 更新時(shí)間:2022年04月25日 10:20:38   作者:小杰編程  
這篇文章主要介紹了??C++11系列學(xué)習(xí)之Lambda表達(dá)式,C++11終于也引入了lambda表達(dá)式,lambda最早來(lái)源于函數(shù)式編程,現(xiàn)代語(yǔ)言慢慢都引入了這個(gè)語(yǔ)法,下文關(guān)于??C++11Lambda表達(dá)式相關(guān)內(nèi)容需要的小伙伴可以參考一下

前言:

終于在C++11中引入了lambda表達(dá)式,lambda最早來(lái)源于函數(shù)式編程,現(xiàn)代語(yǔ)言慢慢都引入了這個(gè)語(yǔ)法,C++也不甘落后,在新標(biāo)準(zhǔn)中加入了lambda表達(dá)式。

一、為什么要有l(wèi)ambda表達(dá)式?

  • 使用方便,就地聲明函數(shù)或函數(shù)對(duì)象,尤其是和bind配合食用更佳
  • 簡(jiǎn)潔,可以匿名創(chuàng)建,語(yǔ)法看起來(lái)極其舒適
  • 可以實(shí)現(xiàn)功能閉包,使用起來(lái)更加靈活

二、使用語(yǔ)法

lambda的通用語(yǔ)法:[ 捕獲列表] ( 參數(shù)表 ) 函數(shù)選項(xiàng) -> 返回值類(lèi)型 { 函數(shù)體 ;};

捕獲列表

  • [] 不捕獲任何變量
  • [&] 以引用方式捕獲外部作用域中所有變量
  • [=] 以值的方式捕獲外部作用域中的所有變量
  • [= , &x] 以值方式捕獲外部作用域變量,但是以引用方式捕獲x變量
  • [ x ] 按值方式捕獲 x 變量
  • [ this ] 捕獲當(dāng)前類(lèi)的this指針,那么lambda表達(dá)式擁有了和類(lèi)成員函數(shù)同樣的權(quán)限,如果使用了& 或 = 那么默認(rèn)添加了此項(xiàng)

mutable影響lambda表達(dá)式

被mutable 修飾的lambda表達(dá)式就算沒(méi)有參數(shù)也要寫(xiě)明參數(shù)列表,若沒(méi)有加mutable,lambda不能修改這個(gè)變量的值,只能使用。 但是被修飾后的lambda表達(dá)式,會(huì)像函數(shù)傳遞參數(shù)一樣,在內(nèi)部定義一個(gè)變量并拷貝這個(gè)值。

#include <iostream>

using namespace std;

int main()
{
size_t t = 9;
auto f = [t] () mutable {return ++t; };
cout << f() << endl; //10
cout << f() << endl; //11
cout << "t:" << t << endl; //9
return 0;
}

可以把它視為帶有重載括號(hào)運(yùn)算符的仿函數(shù),并且沒(méi)有捕獲任何變量的lambda表達(dá)式可以被轉(zhuǎn)換成一個(gè)普通的函數(shù)指針

//用std::function來(lái)存儲(chǔ)和操作lambda表達(dá)式
std::function<int, int> f1 = [](int a){ return a};

//轉(zhuǎn)換為一個(gè)普通的函數(shù)指針
using fun = int(*){int};
fun f =[](int a){return a;}

f(1)

std::bind和lambda表達(dá)式結(jié)合

//eg : 用來(lái)集合中計(jì)算大于5小于10的元素的個(gè)數(shù)
auto f = std::(std::logical_and<bool>(), std::bind( std::greater<int>(), _1, 5), std::bind(std::lesss<int>(),_1, 10));

int count = std::count::_if(coll.bengin(), coll.end(),f);

三、std::function 和lambda表達(dá)式選擇

lambdastd::function效果是一樣的,但是更加簡(jiǎn)潔一些,但不能完全代替,因?yàn)橐恍├系膸?kù)不支持lambda表達(dá)式

到此這篇關(guān)于??C++11系列學(xué)習(xí)之Lambda表達(dá)式的文章就介紹到這了,更多相關(guān)??C++11Lambda表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++?Boost?weak_ptr智能指針超詳細(xì)講解

    C++?Boost?weak_ptr智能指針超詳細(xì)講解

    智能指針是一種像指針的C++對(duì)象,但它能夠在對(duì)象不使用的時(shí)候自己銷(xiāo)毀掉。雖然STL提供了auto_ptr,但是由于不能同容器一起使用(不支持拷貝和賦值操作),因此很少有人使用。它是Boost各組件中,應(yīng)用最為廣泛的一個(gè)
    2022-11-11
  • C++?socket通信遇到的問(wèn)題及解決方法

    C++?socket通信遇到的問(wèn)題及解決方法

    這篇文章主要介紹了C++?socket通信遇到的問(wèn)題,通過(guò)代碼修改來(lái)解決這個(gè)問(wèn)題,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • C語(yǔ)言實(shí)現(xiàn)三子棋實(shí)例代碼

    C語(yǔ)言實(shí)現(xiàn)三子棋實(shí)例代碼

    大家好,本篇文章主要講的是C語(yǔ)言實(shí)現(xiàn)三子棋實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • 淺談C++流庫(kù)的基本結(jié)構(gòu)

    淺談C++流庫(kù)的基本結(jié)構(gòu)

    本文主要介紹了淺談C++流庫(kù)的基本結(jié)構(gòu),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C++ vector容器縮小capacity問(wèn)題

    C++ vector容器縮小capacity問(wèn)題

    這篇文章主要介紹了C++ vector容器縮小capacity問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語(yǔ)言入門(mén)篇--變量的左值和右值

    C語(yǔ)言入門(mén)篇--變量的左值和右值

    本篇文章是基礎(chǔ)篇,適合c語(yǔ)言剛?cè)腴T(mén)的朋友,本文對(duì)初識(shí)c語(yǔ)言的指針和指針變量做了簡(jiǎn)單的分析,幫助大家快速入門(mén)c語(yǔ)言的世界,更好的理解c語(yǔ)言
    2021-08-08
  • 枚舉窗口句柄后關(guān)閉所有窗口示例

    枚舉窗口句柄后關(guān)閉所有窗口示例

    這篇文章主要介紹了關(guān)閉所有窗口的方法,原理是枚舉所有窗口句柄,然后發(fā)送WM_CLOSE消息來(lái)關(guān)閉窗口,需要的朋友可以參考下
    2014-01-01
  • C語(yǔ)言用棧實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的方法示例

    C語(yǔ)言用棧實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的方法示例

    這篇文章主要介紹了C語(yǔ)言用棧實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的方法,結(jié)合實(shí)例形式分析了C語(yǔ)言棧的定義及進(jìn)制轉(zhuǎn)換使用技巧,需要的朋友可以參考下
    2017-06-06
  • C語(yǔ)言如何建立鏈表并實(shí)現(xiàn)增刪查改詳解

    C語(yǔ)言如何建立鏈表并實(shí)現(xiàn)增刪查改詳解

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言如何建立鏈表并實(shí)現(xiàn)增刪查改的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語(yǔ)言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 深入學(xué)習(xí)C++智能指針之shared_ptr與右值引用的方法

    深入學(xué)習(xí)C++智能指針之shared_ptr與右值引用的方法

    智能指針的核心實(shí)現(xiàn)技術(shù)是引用計(jì)數(shù),每使用它一次,內(nèi)部引用計(jì)數(shù)加1,每析構(gòu)一次內(nèi)部的引用計(jì)數(shù)減1,減為0時(shí),刪除所指向的堆內(nèi)存,今天通過(guò)本文給大家分享C++智能指針之shared_ptr與右值引用的方法,需要的朋友跟隨小編一起看看吧
    2021-07-07

最新評(píng)論