欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C++ Lambda 表達(dá)式遞歸寫(xiě)法

今天看到一篇博客介紹使用 Lambda 表達(dá)式遞歸計(jì)算 n!。使用了 C++14 的 generic lambda,給 Lambda 表達(dá)式加了一個(gè)模板參數(shù),在函數(shù)調(diào)用的時(shí)候?qū)?Lambda 表達(dá)式作為參數(shù)傳遞給下一層函數(shù)。這種方法每次調(diào)用函數(shù)的時(shí)候都要比常規(guī)的函數(shù)多傳一個(gè)參數(shù)。我想起兩年前也用 Lambda 表達(dá)式寫(xiě)過(guò)遞歸,利用了引用捕獲和 std::function。以 n! 為例,代碼為:

創(chuàng)新互聯(lián)公司2013年開(kāi)創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元湟中做網(wǎng)站,已為上家服務(wù),為湟中各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

#include <iostream>
#include <functional>

int main()
{
    std::function<int(int)> f = [&f](int n) {
        if (n == 0 || n == 1) {
            return 1;
        }

        return n * f(n - 1);
    }

    std::cout << f(5) << std::endl;
}

這種寫(xiě)法避免了使用 auto f = [&f](int n) 。如果使用 auto 會(huì)造成 f 的類型推導(dǎo)不出來(lái),因?yàn)?f 的類型依賴于后面的 Lambda 表達(dá)式,而編譯器在編譯 Lambda 表達(dá)式時(shí)無(wú)法確定 f 的類型。借助 std::function 就可以避免推導(dǎo) f 的類型。這種寫(xiě)法看似奇特,其實(shí)是合法的,原理與 C 語(yǔ)言的 void *p = &p; 類似。

網(wǎng)頁(yè)標(biāo)題:C++ Lambda 表達(dá)式遞歸寫(xiě)法
路徑分享:http://chinadenli.net/article46/dsoijeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站微信小程序、建站公司服務(wù)器托管、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司