traits,又被叫做特性萃取技術(shù),說得簡單點就是提取“被傳進(jìn)的對象”對應(yīng)的返回類型,讓同一個接口實現(xiàn)對應(yīng)的功能。因為STL的算法和容器是分離的,兩者通過迭代器鏈接。算法的實現(xiàn)并不知道自己被傳進(jìn)來什么。萃取器相當(dāng)于在接口和實現(xiàn)之間加一層封裝,來隱藏一些細(xì)節(jié)并協(xié)助調(diào)用合適的方法,這需要一些技巧(例如,偏特化)。最后附帶一個小小的例子,應(yīng)該能更好地理解 特性萃取。

  下面大部分來源于《STL源碼剖析》,看原書能了解更多細(xì)節(jié)。

 

Traits編程技法


  讓我們一點點拋出問題,然后一點點深入。

  1. 首先,在算法中運用迭代器時,很可能會用到其相應(yīng)型別(迭代器所指之物的型別)。假設(shè)算法中有必要聲明一個變量,以“迭代器所指對象的型別”為型別,該怎么辦呢?

  解決方法是:利用function template的參數(shù)推導(dǎo)機(jī)制。

移動開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

 1 template <class I, class T> 2 void f