[C++]STL萃取学习
STL萃取学习
一,萃取模板类实现
iterator类:模板常用属性的集合类,其他类只需要集成该类即可。本例为学习就只包括value_type属性。
iterator_traits类:属性萃取类。
/***********************************Author:szyu**Date:2017.3.1***************************************/#ifndef__SZYU_ITERATOR__#define__SZYU_ITERATOR__template<typenameT>classiterator_traits{public:typedeftypenameT::value_typevalue_type;};template<typenameT>classiterator{public:typedefTvalue_type;};#endif
/********************************Author:szyu**Date:2017.3.1*************************************/#ifndef__SZYU_HEAD__#define__SZYU_HEAD__#include"iterator.h"template<typenameT>classTest:publiciterator<T>{};template<typenameT>typenameiterator_traits<T>::value_typefunction(intnum1,intnum2){std::cout<<"Traitsfunctionint."<<std::endl;returnnum1+num2;}template<typenameT>typenameiterator_traits<T>::value_typefunction(doublenum1,doublenum2){std::cout<<"Traitsfunctiondouble."<<std::endl;returnnum1+num2;}#endif
二,测试用例
/***************************Author:szyu**Date:2017.3.1***********************************/#include<iostream>#include"head.h"voidtest1(){intv1=function<Test<int>>(1,2);std::cout<<"v1="<<v1<<std::endl;doublev2=function<Test<double>>(1.1,2.2);std::cout<<"v2="<<v2<<std::endl;}intmain(intargc,char*argv[]){test1();return0;}
三,测试结果
Traitsfunctionint.v1=3Traitsfunctiondouble.v2=3.3
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。