色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

function與invoke的區別

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

std::functionstd::invoke是兩個不同的東西,功能也不同。std::function 是一個函數對象的封裝器,可以用來封裝任意類型的可調用對象,比如函數指針、lambda表達式等,而 std::invoke 則是一個函數模板,用于在統一的接口下調用可調用對象。

比如,我們可以使用 std::function 來存儲一個函數指針:

#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);
}

	

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

std::invoke 的作用是提供一種通用的函數調用語法,可以用統一的方式來調用各種可調用對象,而不必關心它們具體是什么類型。

比如,可以使用 std::invoke 來調用一個東西,無論這個東西是函數指針、函數對象還是成員函數指針:

#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 分別調用了函數 foo 和類 Bar 的成員函數 bar,并傳遞了相應的參數。

總結,std::functionstd::invoke 的使用場景是不同的。std::function 適用于需要存儲可調用對象的場景,而 std::invoke 則適用于統一調用各種不同類型的可調用對象的場景。


審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Function
    +關注

    關注

    0

    文章

    14

    瀏覽量

    9932
  • 封裝器
    +關注

    關注

    0

    文章

    7

    瀏覽量

    5902
  • invoke
    +關注

    關注

    0

    文章

    4

    瀏覽量

    2012

原文標題:function與invoke的區別

文章出處:【微信號:程序喵大人,微信公眾號:程序喵大人】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    轉載---verilog中task和function區別

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

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

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

    LabVIEW Property Node 及 Invoke Node 教學

    大家一起來學習Property Node及Invoke Node
    發表于 08-26 15:52

    MegaCore Function User Guide

    MegaCore Function User Guide 好東西哦。網上搜集,希望對你有用。
    發表于 03-25 15:32 ?36次下載

    MATLAB的S-Function編寫指導

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

    什么是Function Keys

    什么是Function Keys  功能鍵。標有F1到F12的鍵,用于通知計算機執行某項功
    發表于 01-22 14:07 ?1104次閱讀

    Mathematical_Function電路設計

    Mathematical Function電路設計
    發表于 01-11 17:41 ?0次下載

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

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

    C++ function技術的實現與具體運用

    當std::function對象沒有初始化任何實際的可調用元素,調用std::function對象將拋出std::bad_function_call異常。
    的頭像 發表于 01-20 09:23 ?3420次閱讀

    std::function簡介及模板類聲明

    01 — std::function簡介 std::function是一個函數包裝器,該函數包裝器模板能包裝任何類型的可調用實體,如普通函數,函數對象,lamda表達式等。包裝器可拷貝,移動等,并且
    的頭像 發表于 07-28 15:30 ?4878次閱讀

    在Java方法中調用Lua function

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

    Simulink Function模塊竟然可以這樣測

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

    C++ invokefunction區別在哪?

    invoke是C++17標準引入的一個函數模板,用來調用可調用對象(Callable Object,如函數指針、函數對象、成員函數指針等)并返回結果。
    的頭像 發表于 09-04 09:11 ?860次閱讀
    C++ <b class='flag-5'>invoke</b>與<b class='flag-5'>function</b>的<b class='flag-5'>區別</b>在哪?

    verilog中function和task的區別

    非常相似,但它們在功能和使用方式上有一些重要的區別。 定義和聲明方式不同: Function:使用關鍵字"function"來定義和聲明。函數可以有一個或多個輸入參數,可以有一個返回值。函數必須在聲明之后直接定義,不能在其他函數
    的頭像 發表于 02-22 15:40 ?1996次閱讀

    verilog task和function區別

    verilog中的task和function都是用于實現模塊中的可重復的功能,并且可以接收參數和返回結果。但是它們在編寫和使用上有一些區別。下面將詳細介紹task和function區別
    的頭像 發表于 02-22 15:53 ?1169次閱讀
    主站蜘蛛池模板: av亚洲2017色天堂 | 中文字幕乱码在线人视频 | 久久中文电影 | 啊…嗯啊好深男男小黄文 | 沈芯语麻豆0076 视频 | 18岁末年禁止观看免费1000个 | 色偷偷爱偷偷要 | voyeurhit农村夫妻偷拍 | 好看的电影网站亚洲一区 | 亚洲男人97色综合久久久 | 丝瓜影院观看免费高清国际观察 | 高清国产激情视频在线观看 | 国产 日韩 欧美 高清 亚洲 | 欧美黑人巨大性极品hd欧 | 日韩精品一区二区亚洲AV观看 | 国产盗摄一区二区 | 美女脱得只剩皮肤 | 国产亚洲精品香蕉视频播放 | 四房色播手机版 | 天天久久影视色香综合网 | bt天堂午夜国产精品 | 一个吃奶两个添下面H | 黄桃AV无码免费一区二区三区 | 亚洲综合春色另类久久 | 不知火舞vs精子 | 玩高中女同桌肉色短丝袜脚文 | 恋夜影视列表免费安卓手机版 | 老熟人老女人国产老太 | 亚洲午夜精品A片久久软件 亚洲午夜精品A片久久不卡蜜桃 | 久久视热频国只有精品 | 亚洲午夜精品aaa级久久久久 | 儿子你得太大了慢点插 | 久久www成人看片 | SM脚奴调教丨踩踏贱奴 | 黑丝美女被人操 | 品色堂主页 | 中文字幕日本在线mv视频精品 | 欧美含羞草免费观看全部完 | 老头扒开粉缝亲我下面 | 美女尿口羞羞视频 | 久久婷婷五月综合色情 |