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

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

 

Traits編程技法


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

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

  解決方法是:利用function template的參數推導機制。

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

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

網友評論