【C++ Primer | 16】容器适配器全特化、偏特化
生活随笔
收集整理的這篇文章主要介紹了
【C++ Primer | 16】容器适配器全特化、偏特化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上面對模板的特化進行了總結。那模板的偏特化呢?所謂的偏特化是指提供另一份模板定義式,而其本身仍為模板;也就是說,針對模板參數更進一步的條件限制所設計出來的一個特化版本。這種偏特化的應用在STL中是隨處可見的。比如
1.測試代碼:?
#include <iostream> using namespace std;namespace templateTest {//模版泛化template<typename T>class iterator_traits{public:iterator_traits() { cout << "模版泛化" << endl; }~iterator_traits() {}};//偏特化template<typename T>class iterator_traits<T*>{public:iterator_traits() { cout << "模版偏特化,特化常規指針" << endl; }~iterator_traits() {};};//偏特化template<typename T>class iterator_traits<const T*>{public:iterator_traits() { cout << "模版偏特化,特化const指針" << endl; }~iterator_traits() {}};//全特化template<>class iterator_traits<int>{public:iterator_traits() { cout << "模版全特化int類型" << endl; }~iterator_traits() {}}; };int main() {templateTest::iterator_traits<int> t1; // 模版全特化int類型templateTest::iterator_traits<float> t2; // 模版泛化templateTest::iterator_traits<int*> t3; // 模版偏特化,特化常規指針templateTest::iterator_traits<const int*> t4; // 模版偏特化,特化const指針 }2. 測試代碼:
#include <iostream> using namespace std;//泛化 template<class U, class T> class Test { public:Test() { cout << "Test 泛化" << endl; } };//偏特化 template<class T> class Test<int, T> { public:Test() { cout << "Test 偏特化" << endl; } };//全特化 template<> class Test<int, char> { public:Test() { cout << "Test 全特化" << endl; } };/*--------------------------------------------------*/template<typename T> void max(const T& t1, const T& t2) {cout << "模版函數泛化" << endl;}//其實函數模版不存在偏特化,只有全特化 template<> void max<int>(const int& t1, const int& t2) {cout << "模版函數全特化" << endl; }void main() {Test<int, int> t1; // Test 偏特化Test<float, int> t2; // Test 泛化Test<int, char> t3; // Test 全特化max(5, 10); // 模版函數特化max(5.5, 10.5); // 模版函數泛化 }?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【C++ Primer | 16】容器适配器全特化、偏特化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的世界雪傀儡怎么做
- 下一篇: lol美服下载巨慢