STL萃取学习
一,萃取模板类实现
iterator类:模板常用属性的集合类,其他类只需要集成该类即可。本例为学习就只包括value_type属性。
iterator_traits类:属性萃取类。
/*********************************** Author : szyu** Date : 2017.3.1***************************************/#ifndef __SZYU_ITERATOR__#define __SZYU_ITERATOR__templateclass iterator_traits{public: typedef typename T::value_type value_type;};template class iterator{public: typedef T value_type;};#endif
/****************************** ** Author : szyu** Date : 2017.3.1*************************************/#ifndef __SZYU_HEAD__#define __SZYU_HEAD__#include "iterator.h"templateclass Test : public iterator {};template typename iterator_traits ::value_typefunction( int num1, int num2 ){ std::cout << "Traits function int." << std::endl; return num1 + num2;}template typename iterator_traits ::value_typefunction( double num1, double num2 ){ std::cout << "Traits function double." << std::endl; return num1 + num2;}#endif
二,测试用例
/************************* ** Author : szyu** Date : 2017.3.1***********************************/#include#include "head.h"voidtest1(){ int v1 = function >(1, 2); std::cout << "v1 = " << v1 << std::endl; double v2 = function >( 1.1, 2.2 ); std::cout << "v2 = " << v2 << std::endl;}intmain( int argc, char *argv[] ){ test1(); return 0;}
三,测试结果
Traits function int.v1 = 3Traits function double.v2 = 3.3