STL之配接器

2021-08-03 17:16:45 字數 1309 閱讀 4001

adapter:將乙個class的介面轉換為另乙個class的介面。

應用於仿函式,functor adapters,價值在於通過它們直接的繫結,組合,修飾能力,幾乎可以無限制地創造出各種可能的表示式。

配接操作包括繫結(bind),否定(negate),組合(compose)、以及對一般函式或成員函式的修飾。

例如:不小於12 可以使用greater_equal的仿函式;

也可以使用not1(bind2nd(less(),12)),即將less()第二個引數繫結為12,再加上否定操作

舉例如何設計仿函式自己的配接器

template

class unary_compose 

: public unary_function//typename不是不能放到基類列中嗎?

//巢狀從屬名稱

typename operation1::result_type 

operator()(const typename operation2::argument_type& x) const

};template

inline unary_compose

compose1(const operation1& op1,const operation2& op2)

//為什麼這個函式在新建的.h檔案中就編譯不過,報錯是語法錯誤,但是放到xfunctional就可以使用?

函式如何採用配接能力:一元仿函式必須繼承unary_function,二元仿函式必須繼承自binary_function,成員函式必須以mem_fun處理過,一般函式必須以ptr_fun處理過。

迭代器的配接器:insert iterators,reverse iterators,iostream iterators.

insert iterators: 能夠將迭代器的賦值操作轉變為插入操作。包括專司尾端的插入操作,專司頭端的插入操作,以及可以從任意位置執行插入操作

reverse iterators:方便用在從尾端開始執行的演算法上。

iostream iterators:可以將迭代器繫結到某個iostream物件上

迭代器配接器的目的:就是方便演算法上加入自己的應用策略。

舉例:int ia =

dequeid(ia,ia+6)

copy(ia+1,ia +2,front_inserter(id));  //輸出的是1,0,1,2,3,4,5

cout<

STL 容器配接器

以底部容器完成所有工作,而具有這種修改某物介面而成為另一種風貌的性質者稱為配接器,因此stl stack queue priority queue都稱為容器配接器。stack是一種先進後出的資料結構,不允許有遍歷行為。stl是以deque作為預設情況下的stack底部結構。deque為底部結構並封閉...

STL學習筆記(迭代器配接器)

reverse 逆向 迭代器 reverse迭代器是一種配接器。重新定義遞增運算和遞減運算。使其行為正好倒置。如果你使用這類迭代器,演算法將以逆向次序處理元素。所有標準容器都允許使用reverse迭代器來遍歷元素。下面是個例子 1 include 2 include 3 include 4 usin...

函式配接器

函式配接器 bind1st op,value op value,param 繫結op的第乙個引數 bind2st op,value op param,value not1 op op param not2 op op param1,param2 int func1 int p1,int p2 int...