最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中的boost::function庫簡介

 更新時(shí)間:2022年06月16日 10:26:33   作者:天方  
這篇文章介紹了C++中的boost::function庫,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

boost::function Boost.Function庫用來提供一個(gè)對象化的函數(shù)指針,通過它可以很容易的將一個(gè)函數(shù)封裝為仿函數(shù)。

boost::function庫可以支持自由函數(shù),函數(shù)對象,類成員函數(shù)。而且參數(shù)個(gè)數(shù)多達(dá)10個(gè)。boost::function庫利用模板技術(shù)來實(shí)現(xiàn)。生成的代碼有很高的運(yùn)行效率。首先我們還是以一個(gè)例子簡單的說明它的用法:

#include <iostream>
#include <boost/function.hpp>

using namespace std;

float add(int x,float y)
{
    return x + y;
}

int main()
{
    boost::function<float (int x, float y)> f = &add;
    cout<<"add(3,2) is "<<f(3,2)<<endl;
}

在上面的例子中,

定義了一個(gè)仿函數(shù),它指向add函數(shù)。這個(gè)是一種比較容易理解的方式,也是boost推薦的寫法,但有的編譯器不支持(其實(shí)大多數(shù)主流編譯器都支持)這種模板的語法,不支持的編譯器包括:

  • Microsoft Visual C++ 6.0, 7.0

  • Borland C++ 5.5.1

  • Sun WorkShop 6 update 2 C++ 5.3

  • Metrowerks CodeWarrior 8.1

如果你用了上述編譯器,則應(yīng)使用boost::function2<float, int, float> f;的形式。

如果只是封裝普通函數(shù)(功能類似函數(shù)指針),則使用方式和普通函數(shù)指針類似,可以直接通過"="來進(jìn)行函數(shù)的封裝,通過"()"來實(shí)現(xiàn)函數(shù)的調(diào)用。

如果用它來封裝成員函數(shù)(用函數(shù)指針來指向成員函數(shù)用起來可不是一般的惡心),可以通過如下兩種方式:

  • 通過boost::bind庫實(shí)現(xiàn)。

  • 通過stl庫std::bind1st和std::mem_fun 函數(shù)組合實(shí)現(xiàn)。

下面是一個(gè)簡單的示例:

struct X
{
    bool foo(int a){ cout<<a<<endl; return false;}
};

int main()
{
    boost::function<bool (int)> f;
    X x;

    f = std::bind1st(
        std::mem_fun(&X::foo), &x);
    f(5);
    

    f = boost::bind(&X::foo, &x, _1);
    f(5);
}

boost::function對象還有一些成員函數(shù),如contains、clear、empty等,也是一些比較有用的函數(shù),功能很簡單,這里就不多介紹了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言去除相鄰重復(fù)字符函數(shù)的實(shí)現(xiàn)方法

    C語言去除相鄰重復(fù)字符函數(shù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了C語言去除相鄰重復(fù)字符函數(shù)的實(shí)現(xiàn)方法的相關(guān)資料,實(shí)現(xiàn)去重字符串相鄰重復(fù)的字符,不相鄰的不用去重的功能,需要的朋友可以參考下
    2017-08-08
  • C語言實(shí)現(xiàn)三子棋(井字棋)算法

    C語言實(shí)現(xiàn)三子棋(井字棋)算法

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)三子棋(井字棋)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++中智能指針如何設(shè)計(jì)和使用

    C++中智能指針如何設(shè)計(jì)和使用

    智能指針(smart pointer)是存儲指向動(dòng)態(tài)分配(堆)對象指針的類,用于生存期控制,能夠確保自動(dòng)正確的銷毀動(dòng)態(tài)分配的對象,防止內(nèi)存泄露,需要的朋友可以參考下
    2012-11-11
  • opencv3機(jī)器學(xué)習(xí)之EM算法示例詳解

    opencv3機(jī)器學(xué)習(xí)之EM算法示例詳解

    這篇文章主要介紹了opencv3機(jī)器學(xué)習(xí)之EM算法的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • C語言字符/字符串相關(guān)函數(shù)收藏大全

    C語言字符/字符串相關(guān)函數(shù)收藏大全

    這篇文章主要給大家介紹了關(guān)于C語言字符/字符串的相關(guān)函數(shù),文中通過示例代碼總結(jié)的非常詳細(xì),對大家學(xué)習(xí)或者使用C語言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 淺談MFC 改變控件大小和位置

    淺談MFC 改變控件大小和位置

    在用VC開發(fā)應(yīng)用程序時(shí),經(jīng)常會要做一些可以改變大小的對話框,而這個(gè)時(shí)候就要求對話框上的控件會隨著對話框大小的改變而改變自己的位置和大小。下面我們就來探討下在MFC中如何改變控件大小和位置
    2015-06-06
  • C++結(jié)合OpenCV實(shí)現(xiàn)RRT算法(路徑規(guī)劃算法)

    C++結(jié)合OpenCV實(shí)現(xiàn)RRT算法(路徑規(guī)劃算法)

    這篇文章主要介紹了C++結(jié)合OpenCV實(shí)現(xiàn)RRT算法,RRT算法整體框架主要分為rand、near、new三點(diǎn)的建立和near與new之間的安全性檢查,需要的朋友可以參考下
    2022-05-05
  • C++ EnterCriticalSection簡單使用

    C++ EnterCriticalSection簡單使用

    線程鎖在多線程中可以控制線程的執(zhí)行順序,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 解析C語言結(jié)構(gòu)體及位段

    解析C語言結(jié)構(gòu)體及位段

    今天小編就為大家分享一篇關(guān)于解析C語言結(jié)構(gòu)體及位段,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 淺談Linux環(huán)境下并發(fā)編程中C語言fork()函數(shù)的使用

    淺談Linux環(huán)境下并發(fā)編程中C語言fork()函數(shù)的使用

    fork函數(shù)在Linux中可以創(chuàng)建子進(jìn)程即一個(gè)新的進(jìn)程,這里我們根據(jù)實(shí)例來淺談Linux環(huán)境下并發(fā)編程中C語言fork()函數(shù)的使用,需要的朋友可以參考下
    2016-06-06

最新評論

股票| 北京市| 西盟| 郴州市| 丰宁| 鹤庆县| 广州市| 西盟| 梁山县| 红桥区| 莲花县| 隆安县| 潼关县| 长春市| 荆门市| 桃园县| 讷河市| 无锡市| 嘉定区| 垣曲县| 平湖市| 上杭县| 潢川县| 四会市| 兰溪市| 滦平县| 扎囊县| 芜湖县| 苗栗县| 兴仁县| 松江区| 普定县| 吴江市| 卢龙县| 信阳市| 临泉县| 郑州市| 郑州市| 扶沟县| 蒲江县| 沈阳市|