STL 04 萃取技術

2021-10-13 19:11:37 字數 1673 閱讀 8896

萃取第一接觸是在高中的化學課中,看來學好c++還得懂化學啊,哈哈!(ps:開玩笑的!)首先我解釋下化學中的萃取。

利用溶質在兩種互不相容的溶劑裡溶解度的不同,用一種溶劑將溶質從另一種溶劑中提取出來。比如汽油洗衣服上的油漬。

感謝我的高中化學***。

開始c++中的萃取:

先看看什麼是特化

模板特化分為兩種:全特化、偏特化

偏特化也叫做區域性特化,也就是區域性的引數特化。

這就是萃取的支援,編譯器會優先選擇特化版本(全特化、偏特化)

型別萃取,在stl中用到的比較多,用於判斷乙個變數是否為pod型別.

簡述來說可以用來判斷出某個變數是內建型別還是自定義型別.

通過型別萃取,萃取到變數型別,對不同變數進行不同處理,可以提公升程式效率.

接下來看看**:

struct _truetype};

struct _falsetype};

template

struct _typetraits

;template<

>

struct _typetraits <

int>

;template

void

copy

(t *dest,

const t *src, size_t sz)

else}}

intmain()

;const size_t size =

sizeof

(array1)

/sizeof

(array1[0]

);int array2[size]=;

copy

(array2, array1, size)

;for

(size_t i =

0; i < size; i++

) cout << endl;

cout <<

"\n************華麗的分割線************\n\n"

; cout <<

"自定義型別string類物件的拷貝:\n"

; string s1=

;const size_t size1 =

sizeof

(s1)

/sizeof

(s1[0]

);string s2[size1]=;

copy

(s2, s1, size1)

;for

(size_t i =

0; i < size1; i++

)system

("pause");

return0;

}

結果:

原理大概就這個樣子。

看看下面這個,就是應用。

STL學習 萃取技術 type

之前在學習stl庫中的析構工具destory 時,提到過這樣一句話,此函式設法找到元素的數值型別,進而利用 type traits 求取適當措施。一直難以理解,現在自己總結了下自己對萃取技術的理解。讓自己困惑的程式 template void destroy t pointer template v...

STL 萃取 Traits 機制剖析

在將萃取機制之前,先要說明模板特化 當有兩個模板類,乙個是通用泛型模板,乙個是特殊型別模板,如果建立乙個特殊型別的物件,會優先呼叫特殊的型別模板類,例如 template 泛型模板 class myclass myclass template class myclass 全特化模板 myclass ...

C 型別萃取技術

traits技術可以用來獲得乙個 型別 的相關資訊的。template class myiterator 當我們使用myiterator時,怎樣才能獲知它所指向的元素的型別呢?我們可以為這個類加入乙個內嵌型別,像這樣 template class myiterator typedef t value...