欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言:

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

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

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

二、使用語法

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

捕獲列表

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

mutable影響lambda表達(dá)式

被mutable 修飾的lambda表達(dá)式就算沒有參數(shù)也要寫明參數(shù)列表,若沒有加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ù),并且沒有捕獲任何變量的lambda表達(dá)式可以被轉(zhuǎn)換成一個(gè)普通的函數(shù)指針

//用std::function來存儲(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 : 用來集合中計(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效果是一樣的,但是更加簡潔一些,但不能完全代替,因?yàn)橐恍├系膸觳恢С謑ambda表達(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í)候自己銷毀掉。雖然STL提供了auto_ptr,但是由于不能同容器一起使用(不支持拷貝和賦值操作),因此很少有人使用。它是Boost各組件中,應(yīng)用最為廣泛的一個(gè)
    2022-11-11
  • C++?socket通信遇到的問題及解決方法

    C++?socket通信遇到的問題及解決方法

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

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

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

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

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

    C++ vector容器縮小capacity問題

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

    C語言入門篇--變量的左值和右值

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

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

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

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

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

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

    這篇文章主要給大家介紹了關(guān)于C語言如何建立鏈表并實(shí)現(xiàn)增刪查改的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(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)存,今天通過本文給大家分享C++智能指針之shared_ptr與右值引用的方法,需要的朋友跟隨小編一起看看吧
    2021-07-07

最新評(píng)論