日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

C++使用Lambda表達式實例講解

來源: 責編: 時間:2023-11-02 09:09:01 291觀看
導讀C++ 中的 Lambda 表達式是一種匿名函數,可以方便地創建并傳遞函數對象。這是 C++11 引入的一項重要功能,可以大大提高代碼的可讀性和簡潔性。以下是一個深入講解 C++ 使用 Lambda 表達式的例子,包括基本語法、捕獲列表、

aLU28資訊網——每日最新資訊28at.com

C++ 中的 Lambda 表達式是一種匿名函數,可以方便地創建并傳遞函數對象。這是 C++11 引入的一項重要功能,可以大大提高代碼的可讀性和簡潔性。aLU28資訊網——每日最新資訊28at.com

以下是一個深入講解 C++ 使用 Lambda 表達式的例子,包括基本語法、捕獲列表、函數調用、以及與 STL 的結合使用等。aLU28資訊網——每日最新資訊28at.com

Lambda基本語法

首先,我們來看一個最簡單的 lambda 表達式:aLU28資訊網——每日最新資訊28at.com

[](){/* do nothing */};

這個 lambda 表達式定義了一個空函數,沒有參數,也沒有返回值。你可以將其看作是一個沒有實體的具名函數。aLU28資訊網——每日最新資訊28at.com

你還可以定義帶有參數的 lambda 表達式:aLU28資訊網——每日最新資訊28at.com

[](int a, float b){return a + b;};

這個函數接收兩個參數,一個是 int 類型的 a,另一個是 float 類型的 b。它的返回值是 a  b 的和。aLU28資訊網——每日最新資訊28at.com

你也可以定義帶有默認參數的 lambda 表達式:aLU28資訊網——每日最新資訊28at.com

[](int a, float b = 0.0f){return a + b;};

這個函數和上一個函數功能基本相同,只是 b 參數的默認值是 0.0faLU28資訊網——每日最新資訊28at.com

Lambda的捕獲列表

你還可以在 lambda 表達式中捕獲外部變量的值:aLU28資訊網——每日最新資訊28at.com

int a = 10;float b = 20.0f;auto add = [&a, &b]() { return a + b; }; // 使用引用捕獲外部變量std::cout << add() << std::endl; // 輸出 30

在這個例子中,&a  &b 是通過引用來捕獲 a  b 的值的。這意味著 lambda 表達式可以修改捕獲的變量的值。如果你只想在 lambda 表達式中使用外部變量的值,而不修改它們的值,你應該使用值捕獲而不是引用捕獲。例如:aLU28資訊網——每日最新資訊28at.com

int a = 10;float b = 20.0f;auto add = [a, b]() { return a + b; }; // 使用值捕獲外部變量std::cout << add() << std::endl; // 輸出 30

在這個例子中,雖然 a  b 的值被傳遞給了 lambda 表達式,但是 lambda 表達式并不能修改它們的值。aLU28資訊網——每日最新資訊28at.com

Lambda與函數調用

你可以將 lambda 表達式作為一個函數參數傳遞給其他函數。例如,你可以使用一個 lambda 表達式來作為 std::sort 函數的比較函數:aLU28資訊網——每日最新資訊28at.com

std::vector<int> v = {5, 3, 1, 4, 2};std::sort(v.begin(), v.end(), [](int a, int b) {return a < b;}); // 使用 lambda 表達式作為比較函數std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " ")); std::cout << std::endl; // 輸出 1 2 3 4 5

在這個例子中,lambda 表達式 [](int a, int b) {return a < b;} 被傳遞給了 std::sort 函數,用于比較 v 中的元素。這意味著你可以用 lambda 表達式來實現自定義的算法和數據結構。aLU28資訊網——每日最新資訊28at.com

Lambda與 STL 的結合使用

下面我們再來看一個比較復雜但很有用的例子:使用 lambda 表達式和 STL 來查找一個 vector 中第一個出現的不重復的元素:aLU28資訊網——每日最新資訊28at.com

#include <iostream>#include <vector>#include <algorithm>#include <unordered_set>int main() {    std::vector<int> v = {1, 2, 3, 2, 4, 3, 5, 6, 4};    auto it = std::find_if(v.begin(), v.end(), [&](int a) {    	return std::find(std::begin(un), std::end(un), a) == std::end(un);    });    }

在這個例子中,我們使用了一個較為復雜的 lambda 表達式來作為 std::find_if 函數的比較函數。這個 lambda 表達式接收一個參數 a,然后使用一個名為 un  std::unordered_set 來查找 a 是否第一次出現。這個例子展示了如何使用 lambda 表達式和 STL 來解決一個復雜的問題。aLU28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-16511-0.htmlC++使用Lambda表達式實例講解

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 聊一聊 Python 的換行以及轉義

下一篇: 不是吧?這 十個 React UI 組件庫你不會還不知道吧?

標簽:
  • 熱門焦點
  • K60至尊版狂暴引擎2.0加持:超177萬跑分斬獲性能第一

    Redmi的后性能時代戰略發布會今天下午如期舉辦,在本次發布會上,Redmi公布了多項關于和聯發科的深度合作,以及新機K60 Ultra在軟件和硬件方面的特性,例如:“K60 至尊版,雙芯旗艦
  • 小米平板5 Pro 12.4簡評:多專多能 兼顧影音娛樂的大屏利器

    疫情帶來了網課,網課盤活了安卓平板,安卓平板市場雖然中途停滯了幾年,但好的一點就是停滯的這幾年行業又有了新的發展方向,例如超窄邊框、高刷新率、多攝鏡頭組合等,這就讓安卓
  • 7月安卓手機性能榜:紅魔8S Pro再奪榜首

    7月份的手機市場風平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領先版處理器的新機之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機廠商修整的時間,進入8月份之
  • 一年經驗在二線城市面試后端的經驗分享

    忠告這篇文章只適合2年內工作經驗、甚至沒有工作經驗的朋友閱讀。如果你是2年以上工作經驗,請果斷劃走,對你沒啥幫助~主人公這篇文章內容來自 「升職加薪」星球星友 的投稿,坐
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的&ldquo;網紅&rdquo;。7月5日至9日,為期5天的東方甄選&ldquo;甘肅行&rdquo;首次在自有App內直播,
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯網那些事&ldquo;起猛了,我能看得懂日語了&rdquo;。&ldquo;為什么日本人說話我能聽懂?&rdquo;&ldquo;中文不像中文,日語不像日語,但是我竟然看懂了&rdquo;&hellip;&hell
  • 首發天璣9200+ iQOO Neo8系列發布首銷售價2299元起

    2023年5月23日晚,iQOO Neo8系列正式發布。其中,Neo系列首款Pro之作——iQOO Neo8 Pro強悍登場,限時售價3099元起;價位段最強性能手機iQOO Neo8同期上市
  • 聯想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據有人爆料,聯想的下一款 ThinkBook Plus 可能更特殊,它
Top 主站蜘蛛池模板: 夹江县| 蓬安县| 霍邱县| 新源县| 乌审旗| 博客| 和顺县| 剑川县| 阿荣旗| 黄冈市| 安国市| 大冶市| 西平县| 泽库县| 高淳县| 和龙市| 石门县| 玛纳斯县| 烟台市| 全州县| 沙雅县| 晋州市| 宣武区| 廊坊市| 库尔勒市| 盐山县| 沙雅县| 荆门市| 水富县| 莱阳市| 凌海市| 日喀则市| 色达县| 栖霞市| 马公市| 威远县| 交口县| 合山市| 巩留县| 阿荣旗| 浦东新区|