STL萃取学习

一,萃取模板类实现

iterator类:模板常用属性的集合类,其他类只需要集成该类即可。本例为学习就只包括value_type属性。

iterator_traits类:属性萃取类。

/*********************************** Author : szyu** Date : 2017.3.1***************************************/#ifndef __SZYU_ITERATOR__#define __SZYU_ITERATOR__template 
class 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"template 
class 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