C++ Primer 5th笔记(10)chapter10 泛型算法 :bind
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(10)chapter10 泛型算法 :bind
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 定義
一個函數適配器,接受一個函數調用,增加或更改參數傳遞給另外一個函數調用。
比如 auto newCallable=bind(callable, arg_list);
newCallable本身是一個可調用對象,當我們調用newCallable函數時, newCallable會調用callable函數。
arg_list是callable的參數,是逗號分隔的多個參數列表,形如_n的名字,_1是newCallable的第一個參數, _2為第二個參數,依次類推。
- 標準庫bind函數 functional.h
- _n參數在命名空間placeholders中,需要如下聲明:
eg.
using namespace std::placeholders; bool check_size(const string &s, string::size_type sz) {return s.size() >= sz; }auto check6 = bind(check_size, _1, 6); string s = "hello"; bool b1 = check6(s); <=> check_size(s, 6);eg2.
auto g = bind(f, a, b, _2, c, _1); g(_1, _2) => f(a, b, _2, c, _1); g(X, Y) => f(a, b, Y, c, X);2. bind參數不能拷貝
2.1 eg. 不能拷貝ostream
ostream &print(ostream &os,const string &s,char c) { return os<<s<<c;}for_each(word.begin(),word.end(),bind(print,os,_1, ''))//error2.2 可以使用ref函數。
函數ref返回一個對象,包含給定引用,此對象是可以拷貝的。
- 標準庫中還有一個cref函數,生成一個保存const引用的類。
- 與bind一樣,函數ref和cref也定義在頭文件functional中。
總結
以上是生活随笔為你收集整理的C++ Primer 5th笔记(10)chapter10 泛型算法 :bind的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(10)
- 下一篇: 以太坊节点布置(4) geth节点互联