亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

boost::function庫可以支持自由函數(shù),函數(shù)對(duì)象,類成員函數(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對(duì)象還有一些成員函數(shù),如contains、clear、empty等,也是一些比較有用的函數(shù),功能很簡單,這里就不多介紹了。

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

相關(guān)文章

  • C語言實(shí)現(xiàn)貪吃蛇游戲演示

    C語言實(shí)現(xiàn)貪吃蛇游戲演示

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)貪吃蛇游戲演示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++實(shí)現(xiàn)多項(xiàng)式相乘

    C++實(shí)現(xiàn)多項(xiàng)式相乘

    這篇文章主要介紹了C++實(shí)現(xiàn)多項(xiàng)式相乘方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++計(jì)數(shù)排序詳解

    C++計(jì)數(shù)排序詳解

    計(jì)數(shù)排序的思想我們之前接觸過的例如:插入排序,歸并排序,快速排序,堆排序等都是基于集合元素之間的比較這一基本的思想,它們執(zhí)行的時(shí)間復(fù)雜度最優(yōu)是趨于O(nlgn),而計(jì)數(shù)排序的運(yùn)行機(jī)制不是基于集合元素之間的大小比較
    2016-04-04
  • Qt6.0?qproperty-*不生效原因解決分析

    Qt6.0?qproperty-*不生效原因解決分析

    這篇文章主要為大家介紹了Qt6.0?qproperty-*不生效原因解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 關(guān)于C++對(duì)象繼承中的內(nèi)存布局示例詳解

    關(guān)于C++對(duì)象繼承中的內(nèi)存布局示例詳解

    這篇文章主要給大家介紹了關(guān)于C++對(duì)象繼承中內(nèi)存布局的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • while和for可以相互轉(zhuǎn)換的例子分享

    while和for可以相互轉(zhuǎn)換的例子分享

    這篇文章主要介紹了while和for可以相互轉(zhuǎn)換的例子,需要的朋友可以參考下
    2014-02-02
  • C++多重繼承及多態(tài)性原理實(shí)例詳解

    C++多重繼承及多態(tài)性原理實(shí)例詳解

    這篇文章主要介紹了C++多重繼承及多態(tài)性原理實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • C++?反匯編之關(guān)于Switch語句的優(yōu)化措施

    C++?反匯編之關(guān)于Switch語句的優(yōu)化措施

    這篇文章主要介紹了C++?反匯編之關(guān)于Switch語句的優(yōu)化措施,利用三種優(yōu)化來降低樹高度,誰的效率高就優(yōu)先使用誰,三種優(yōu)化都無法匹配才會(huì)使用判定樹,具體內(nèi)容詳情跟隨小編一起看看吧
    2022-01-01
  • 詳解C++函數(shù)類型與重載函數(shù)

    詳解C++函數(shù)類型與重載函數(shù)

    這篇文章主要為大家介紹了C++函數(shù)類型與重載函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 從頭學(xué)習(xí)C語言之for語句和循環(huán)嵌套

    從頭學(xué)習(xí)C語言之for語句和循環(huán)嵌套

    這篇文章主要為大家詳細(xì)介紹了C語言之for語句和循環(huán)嵌套,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評(píng)論