欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

function與invoke的區(qū)別

程序喵大人 ? 來源:程序喵大人 ? 2023-04-27 15:13 ? 次閱讀

std::functionstd::invoke是兩個(gè)不同的東西,功能也不同。std::function 是一個(gè)函數(shù)對(duì)象的封裝器,可以用來封裝任意類型的可調(diào)用對(duì)象,比如函數(shù)指針、lambda表達(dá)式等,而 std::invoke 則是一個(gè)函數(shù)模板,用于在統(tǒng)一的接口下調(diào)用可調(diào)用對(duì)象。

比如,我們可以使用 std::function 來存儲(chǔ)一個(gè)函數(shù)指針:

#include 
#include 


void foo(int a, int b)
{
    std::cout << "foo(" << a << ", " << b << ")" << std::endl;
}


int main()
{
    std::function<void(int, int)> f = foo;
    f(1, 2);
}

	

上述代碼中,我們將函數(shù)指針 foo 封裝成了一個(gè) std::function 對(duì)象 f,然后通過調(diào)用 f(1, 2) 來調(diào)用函數(shù) foo。

std::invoke 的作用是提供一種通用的函數(shù)調(diào)用語法,可以用統(tǒng)一的方式來調(diào)用各種可調(diào)用對(duì)象,而不必關(guān)心它們具體是什么類型。

比如,可以使用 std::invoke 來調(diào)用一個(gè)東西,無論這個(gè)東西是函數(shù)指針、函數(shù)對(duì)象還是成員函數(shù)指針:

#include 
#include 


void foo(int a, int b)
{
    std::cout << "foo(" << a << ", " << b << ")" << std::endl;
}


class Bar {
public:
    void bar(int a, int b) const
{
        std::cout << "Bar::bar(" << a << ", " << b << ")" << std::endl;
    }
};


int main()
{
    std::invoke(foo, 1, 2);


    Bar b;
    std::invoke(&Bar::bar, &b, 1, 2);
}

	

上面代碼,使用 std::invoke 分別調(diào)用了函數(shù) foo 和類 Bar 的成員函數(shù) bar,并傳遞了相應(yīng)的參數(shù)

總結(jié),std::functionstd::invoke 的使用場景是不同的。std::function 適用于需要存儲(chǔ)可調(diào)用對(duì)象的場景,而 std::invoke 則適用于統(tǒng)一調(diào)用各種不同類型的可調(diào)用對(duì)象的場景。


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Function
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    9946
  • 封裝器
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    5903
  • invoke
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    2013

原文標(biāo)題:function與invoke的區(qū)別

文章出處:【微信號(hào):程序喵大人,微信公眾號(hào):程序喵大人】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    轉(zhuǎn)載---verilog中task和function區(qū)別

    本帖最后由 hxing 于 2014-3-13 22:25 編輯 task--- 任務(wù)function --- 函數(shù)任務(wù)可以有input、output和inout,數(shù)量不限;函數(shù)只有input
    發(fā)表于 03-13 21:53

    Database Connectivity Toolkit 工具包里面Fetch Element Data VI 和Variant To Data Function區(qū)別。

    我是新手,在看數(shù)據(jù)庫方面的程序,自己理解要讀取數(shù)據(jù)庫中的數(shù)據(jù)要通過Variant To Data Function轉(zhuǎn)換才能顯示,可是參考例子中Fetch Element Data VI也可以自己用來
    發(fā)表于 07-16 14:22

    LabVIEW Property Node 及 Invoke Node 教學(xué)

    大家一起來學(xué)習(xí)Property Node及Invoke Node
    發(fā)表于 08-26 15:52

    MegaCore Function User Guide

    MegaCore Function User Guide 好東西哦。網(wǎng)上搜集,希望對(duì)你有用。
    發(fā)表于 03-25 15:32 ?36次下載

    MATLAB的S-Function編寫指導(dǎo)

    S-Function(系統(tǒng)函數(shù))為擴(kuò)展Simulink®的性能提供了一個(gè)有力的工具。以下下節(jié)闡述了什么是S-Function,為什么可以使用S-Function,以及怎樣編寫自己的S-
    發(fā)表于 08-16 16:39 ?146次下載

    換向機(jī)能 Reversal Function

    換向機(jī)能 Reversal Function 5.3.1.1  換向閥的“通”和“位” “通”(Port)和“位”(Position)是換向閥的重要概
    發(fā)表于 10-25 14:58 ?1529次閱讀
    換向機(jī)能 Reversal <b class='flag-5'>Function</b>

    什么是Function Keys

    什么是Function Keys  功能鍵。標(biāo)有F1到F12的鍵,用于通知計(jì)算機(jī)執(zhí)行某項(xiàng)功
    發(fā)表于 01-22 14:07 ?1107次閱讀

    Mathematical_Function電路設(shè)計(jì)

    Mathematical Function電路設(shè)計(jì)
    發(fā)表于 01-11 17:41 ?0次下載

    形似亞馬遜Echo:哈曼卡頓Cortana智能音箱Invoke預(yù)計(jì)8月份上市

    在今年5月份,微軟和哈曼卡頓聯(lián)合研制的Cortana智能音箱Invoke最終發(fā)布,官網(wǎng)介紹到,使用Invoke,用戶將能通過Skype撥打和接聽電話,支持語音控制音樂播放和Cortana語音助手。
    發(fā)表于 07-10 09:51 ?1047次閱讀

    C++ function技術(shù)的實(shí)現(xiàn)與具體運(yùn)用

    當(dāng)std::function對(duì)象沒有初始化任何實(shí)際的可調(diào)用元素,調(diào)用std::function對(duì)象將拋出std::bad_function_call異常。
    的頭像 發(fā)表于 01-20 09:23 ?3447次閱讀

    在Java方法中調(diào)用Lua function

    Java先載入login.lua腳本并編譯,然后再獲取指定名稱的函數(shù),無參的直接使用call()方法調(diào)用,帶參的需要通過invoke(LuaValue[])傳入?yún)?shù)表。
    的頭像 發(fā)表于 09-07 10:47 ?1466次閱讀

    Simulink Function模塊竟然可以這樣測

    本文介紹了使用TPT測試Simulink Function模塊的兩種方案,TPT還支持MATLAB Function的測試。
    的頭像 發(fā)表于 08-04 14:41 ?1441次閱讀
    Simulink <b class='flag-5'>Function</b>模塊竟然可以這樣測

    C++ invokefunction區(qū)別在哪?

    invoke是C++17標(biāo)準(zhǔn)引入的一個(gè)函數(shù)模板,用來調(diào)用可調(diào)用對(duì)象(Callable Object,如函數(shù)指針、函數(shù)對(duì)象、成員函數(shù)指針等)并返回結(jié)果。
    的頭像 發(fā)表于 09-04 09:11 ?874次閱讀
    C++ <b class='flag-5'>invoke</b>與<b class='flag-5'>function</b>的<b class='flag-5'>區(qū)別</b>在哪?

    verilog中function和task的區(qū)別

    非常相似,但它們?cè)诠δ芎褪褂梅绞缴嫌幸恍┲匾?b class='flag-5'>區(qū)別。 定義和聲明方式不同: Function:使用關(guān)鍵字"function"來定義和聲明。函數(shù)可以有一個(gè)或多個(gè)輸入?yún)?shù),可以有一個(gè)返回值。函數(shù)必須在聲明之后直接定義,不能在其他函數(shù)
    的頭像 發(fā)表于 02-22 15:40 ?2055次閱讀

    verilog task和function區(qū)別

    verilog中的task和function都是用于實(shí)現(xiàn)模塊中的可重復(fù)的功能,并且可以接收參數(shù)和返回結(jié)果。但是它們?cè)诰帉懞褪褂蒙嫌幸恍?b class='flag-5'>區(qū)別。下面將詳細(xì)介紹task和function區(qū)別
    的頭像 發(fā)表于 02-22 15:53 ?1196次閱讀