2018-02-24

Boolan STL 第五周

語(yǔ)言層面,STL中算法是function template,其他的容器、迭代器、仿函數(shù)、適配器、分配器都是class template

由于algorithms看不到container,所以iterator必須能提供給algorithms提出問(wèn)題的答案。

iterator的5種類型:

array、vector、deque屬于random_access_iterator_tag

list、rb_tree(set/map等)屬于bidirectional_iterator_tag

forward_list、hashtable(unordered set/map等)屬于forward_iterator_tag

istream_iterator屬于input_iterator_tag

ostream_iterator屬于output_iterator_tag

iterator_category對(duì)算法的影響:可以通過(guò)使用萃取機(jī)識(shí)別出不同的類別的iterator來(lái)重載函數(shù)的不同實(shí)現(xiàn)。如:distance()函數(shù)

iterator_category配合type traits可以使算法針對(duì)不同容器的迭代器產(chǎn)生不同的實(shí)現(xiàn),如copy()

算法源碼中對(duì)應(yīng)該使用哪種類型的iterator有暗示:

通過(guò)給算法傳入自定義functor實(shí)現(xiàn)特定功能:如accumulate()

算法count/count_if:

算法find/find_if:

算法sort使用:

算法binary_search:必須先排序,才能進(jìn)行二分搜尋

仿函數(shù)functor:只為算法服務(wù),必須要根據(jù)參數(shù)數(shù)量繼承unary_function或binary_function才能算可適配的(adaptable),因?yàn)樗峁┝艘恍?huì)被算法問(wèn)到的typedefine

適配器:根據(jù)要改造的東西分為container adapter、iterator adapter、functor adapter,適配器和被改造的原型是combination的關(guān)系。

iterator和functor能提供算法回答所需的typedefine:

函數(shù)適配器:改造functor。如:bind2nd、not1

c++11新適配器bind用法:

迭代器適配器:改造iterator,如reverse_iterator、inserter

x適配器:如istream_iterator和ostream_iterator

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.C++標(biāo)準(zhǔn)庫(kù)的算法,是什么東西? 從語(yǔ)言的層面講,STL的算法都長(zhǎng)下面兩個(gè)樣子: template Algor...
    卡爾曼閱讀 408評(píng)論 0 0
  • 目錄 1. 算法 1.1 各種容器的 iterators 的 iterator_category 1.2 iter...
    Michael_SR閱讀 554評(píng)論 0 0
  • 在關(guān)卡藍(lán)圖與Actor藍(lán)圖之間通信 它們是不同類型的藍(lán)圖,需要用藍(lán)圖接口來(lái)傳輸數(shù)據(jù) 從關(guān)卡藍(lán)圖發(fā)送數(shù)據(jù)到Actor...
    一言的世界閱讀 273評(píng)論 0 0
  • 項(xiàng)目組件化,顧名思義,就是將項(xiàng)目中的各個(gè)模塊按照基礎(chǔ)組建,功能組件,業(yè)務(wù)組件劃分成一個(gè)個(gè)單獨(dú)的模塊,以使得各個(gè)模塊...
    當(dāng)當(dāng)靜靜閱讀 436評(píng)論 0 1
  • 本周課程主要內(nèi)容為STL6大部件中的迭代器、算法、泛函數(shù)和適配器。其中算法與其他STL部件的區(qū)別之一是算法是函數(shù)模...
    cayhw閱讀 556評(píng)論 0 0

友情鏈接更多精彩內(nèi)容