掃描二維碼
隨時(shí)隨地手機(jī)看文章
語(yǔ)法糖是一種讓程序員使用更加便利的一種語(yǔ)法,并不會(huì)帶來(lái)額外的功能,比如Lambda,沒(méi)有這種語(yǔ)法糖,其可以用已有的語(yǔ)法等價(jià)的實(shí)現(xiàn)出相應(yīng)的功能。Lamdba產(chǎn)生的意義,而缺乏編程經(jīng)驗(yàn)的同學(xué),跟著我一起來(lái)梳理下Lamdba給我們帶來(lái)了哪些便利性?Lambda最多的場(chǎng)景是回調(diào)函數(shù),先說(shuō)說(shuō)回調(diào)函數(shù)。在編程中回調(diào)函數(shù)是一個(gè)常見(jiàn)的設(shè)計(jì)方式, 下圖是一個(gè)常見(jiàn)的同步調(diào)用的回調(diào)函數(shù):調(diào)用方訪(fǎng)問(wèn)被調(diào)用方的實(shí)現(xiàn)函數(shù)InvokeFunction被調(diào)用方訪(fǎng)問(wèn)調(diào)用方的回調(diào)函數(shù)CallbackFunction被調(diào)用方使用調(diào)用方指定的方法去實(shí)現(xiàn)內(nèi)部的一個(gè)邏輯。常見(jiàn)的比如:被調(diào)用模塊使用調(diào)用模塊指定的方法完成其功能,比如常見(jiàn)的std::sort被調(diào)用方通過(guò)回調(diào)函數(shù)去通知調(diào)用模塊,去進(jìn)行相應(yīng)操作。回調(diào)函數(shù)和函數(shù)對(duì)象(仿函數(shù))。回調(diào)函數(shù)最常見(jiàn)的C和C 中都使用的函數(shù)指針,我們以std::sort為例。一個(gè)vector容器中存儲(chǔ)了若干的Student信息,想要將這些學(xué)生信息根據(jù)年齡進(jìn)行升序排序,于是可以調(diào)用std::sort,并且使用自定義的函數(shù)StudentSortFunction給sort作為回調(diào)函數(shù)來(lái)完成排序。#include?
#include?
#include?
struct?Student
{?
??std::string??m_strName;??
??unsigned?int?m_uAge;
};
void?PrintStudentVector(const?std::vector