源碼以前,了無祕密 ——侯傑ios
第六章算法算法
next_permutation函數
好比:01342 -> 01423 -> 01432spa
方法:從尾端開始往前尋找兩個相鄰的元素,令第一個元素爲*i,第二個元素爲*ii,code
且知足 *i <*ii,找到這樣一組相鄰元素後,再從最尾端開始往前檢驗,找到第一對象
個大於*i的元素,令爲*j,將i,j元素對調,再將ii以後的全部元素顛倒排行,此即blog
所求之「下一個」排列組合。接口
prev_permutation:相似於next_permutation源碼
第七章:仿函數it
仿函數:調用者能夠像函數同樣地被調用,在被調用者則以對象所定義的function call operator
扮演函數的實質角色。
實現觀點而言,仿函數其實上就是一個」行爲相似函數「的對象。爲了可以」行爲相似函數」,
其類別定義中必須自定義(或說改寫。重載)function call 運算子(operator()),
擁有這樣的運算子後,就能夠在仿函數的對象後面加上一對小括號,以此調用仿函數
所定義的operator()
算術類仿函數:
加法:plus<T>
template<class T> Struct plus:public binary_function<T,T,T> { T operator()(const T &x, const T &y) const { return x+y; }
第八章:配接器
配接器在STL組件的靈活組合運用功能上,扮演着軸承,轉換器的角色。
將一個class的接口轉換爲另外一個class的接口,使本來接口不兼容而不能合做的
class,能夠一塊兒運做。
應用於容器(container adapter):queue、 stack
應用於迭代器(iterator adapters):insert iterators、 reverse iterators、 iostream iterators
應用於仿函數(function adapters):