萃取第一接觸是在高中的化學課中,看來學好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...