bind解救普通函式

2021-09-17 22:26:08 字數 1090 閱讀 9877

老是用lambda表示式,也不行呀,得讓普通函式也能適應一下標準庫演算法。

auto newcallable = bind(callable, arg_list); //arg_list是給callable的引數
普通函式如下,傳不進find_if函式。

bool check_size(const string &s1, const int &sz)

bind改良一下

auto check = bind(check_size, _1, 6);  //
解釋:_1是check的第乙個引數,傳給check_size的第乙個引數,6是固定值,傳給check_size的第二個引數。

這樣find_if就能用了

find_if(words.begin(),words.end(), check);

find_if(words.begin(),words.end(), bind(check_size, _1, 6));

先建立乙個匿名物件,然後匿名物件把引數傳給check_size。這裡匿名物件的引數型別不用定義了,應該是自動推斷的。

佔位符指的是newcallable的引數,傳進callable的引數列表。

auto g = bind(f, a, b, _2, c, _1);
呼叫g(_1,_2)等價於 f(a, b, _2, c, _1)。

乙個妙用

sort(words,begin(), words,end(), isshorter);

sort(words,begin(), words,end(), bind(isshorter, _2, _1)); //反著排序

乙個不好的地方時bind對傳進來的引數拷貝。

ostream &pint(ostream & os, const string &s, char c)

{ return os《解釋:bind是乙個函式,要拷貝傳進來的引數,當然再呼叫print時,print就不用拷貝了。

bind()函式 listen()函式

bind 函式 include include int bind int sockfd,const struct sockaddr addr,socklen t addrlen 12 3sockfd是返回socket函式的返回值 addr 傳入引數 struct sockaddr addr addr...

bind函式詳解

前面我們已經說了,套接字也建立了,地方 也定義了,下面就需要將socket放置在這個 地方 tcp 將他們緊緊地 在一起,用bind函式吧,我們來看看函式原型 int pascal far bind socket s,const struct sockaddr far addr,int namele...

bind函式解析

名稱 bind 把名字和套接字相關聯 使用格式 include include intbind int sockfd const struct sockaddr addr socklen t addrlen 功能描述 當用socket 函式建立套接字以後,套接字在命名空間 網路位址族 中存在,但沒有...