重溫《STL源碼剖析》筆記 第6、7、八章 next_permutation (字典序)

        源碼以前,了無祕密  ——侯傑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):

相關文章
相關標籤/搜索