欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
bind1st、bind2nd的使用【轉】

以前在使用stl的過(guò)程中發(fā)現bind1st和bind2nd這兩個(gè)函數,當時(shí)不太理解什么意思,今天在網(wǎng)上查了一下相關(guān)資料發(fā)現竟然很簡(jiǎn)單,下面我就具體解釋一下他們的用法。

        bind1st和bind2nd函數用于將一個(gè)二元算子(binary functor,bf)轉換成一元算子(unary functor,uf)。為了達到這個(gè)目的,它們需要兩個(gè)參數:要轉換的bf和一個(gè)值(v)。

         可能這么解釋以后大家還不是很清楚,那么就說(shuō)點(diǎn)白話(huà)吧。我們在做比較的時(shí)候所寫(xiě)的表達式像 x > k ,x < k,這里的k是一個(gè)參數表示你程序里面的表達式要和k值去比較。上面這兩個(gè)表達式對應的應該是bind2nd ,簡(jiǎn)單的理解就是把k作為比較表達式的第二個(gè)參數。如果使用bind1st則對應的表達式是 k > x,k < x,也就是把k作為比較表達式的第一個(gè)參數。大家可能會(huì )注意到這里面沒(méi)有=的比較,先別著(zhù)急,后面將會(huì )說(shuō)道如何實(shí)現=的比較。先舉兩個(gè)例子看看 bind1st和bind2nd的用法。

int a[] = {1, 2, 100, 200};

std::vector< int> arr(a, a + 4);

// 移除所有小于100的元素
arr.erase( std::remove_if( arr.begin(), arr.end(),
     std::bind2nd( std::less< int>(), 100)), arr.end());

這里的比較表達式相當于arr.value < 100

如果用bind1st則表達的意思就恰恰相反

// 移除所有大于100的元素
arr.erase( std::remove_if( arr.begin(), arr.end(),
     std::bind1st( std::less< int>(), 100)), arr.end());

這里的表達式相當于100 < arr.value

當然為了實(shí)現刪除大于100的元素你同樣可以使用bind2nd

// 移除所有大于100的元素
arr.erase( std::remove_if( arr.begin(), arr.end(),
     std::bind2nd( std::greater< int>(), 100)), arr.end());

前面說(shuō)道=的比較,比如說(shuō)x <= k怎么實(shí)現呢,std又提供了一個(gè)好東西not1,我們可以說(shuō) !(x > k) 和 x <= k是等價(jià)的,那么我們看看下面的表達式:

// 移除所有小于等于100的元素
arr.erase( std::remove_if( arr.begin(), arr.end(),
     std::not1(std::bind2nd( std::greater< int>(), 100))), arr.end());

說(shuō)明:not1是否定返回值是單目的函數,std中還有not2它是否定返回值是雙目的函數

例子需要包含頭文件

#include <vector>

#include <algorithm>

#include <functional>


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
c++ vector刪除元素
STL-vector介紹
函數對象 | 賴(lài)明星
(原創(chuàng ))C++11改進(jìn)我們的程序之簡(jiǎn)化我們的程序(五)
[Boost系列] Boost學(xué)習
C++“準”標準庫Boost學(xué)習指南(9):Boost.Bind
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久