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