数组类模板(四十九)

  

,,,,,,,,之前我们学习了类模板,今天我们来看看数组类模板。模板参数可以是数值型参数(非类型参数),如下

数组类模板(四十九)

,,,,,,,使用数值型模板参数是有的,如:. .

,,,,,,,,下来我们用函数模板来实现一个面试题:用最高效的方法求1 + 2 + 3 +…+ N的值。

# include  & lt; iostream>   # include  & lt; string>      using  namespace 性传播疾病;      模板   & lt;, typename  T, int  N 比;   void  Func ()   {   ,,,T 一个[N],=, {0};   ,,,,   ,,,(int  i=0, i:: VALUE  +, N;   };      模板   & lt;,在   class  Sum  & lt;, 1,在   {   公众:   ,,,static  const  int  VALUE =, 1;   };      int  main ()   {   ,,,cout  & lt; & lt;,“1 + 2 + 3 +…+ 10,=,,, & lt; & lt;, Sum<10祝辞::VALUE  & lt; & lt;, endl;   ,,,cout  & lt; & lt;,“1 + 2 + 3 +…+ 100,=,,, & lt; & lt;, Sum<100祝辞::VALUE  & lt; & lt;, endl;   ,,,,   ,,,return  0;   }

,,,,,,,,我们通过用函数模板来实现递归的定义,递归的出口为它的完全特化为1时。下来我们来看看编译结果

数组类模板(四十九)

,,,,,,,,我们看到已经实现了这个功能。下来我们再来实现数组类的模板


数组。h源码

# ifndef  _ARRAY_H_   # define  _ARRAY_H_      模板   & lt;, typename  T, int  N 比;   class 数组   {   ,,,T  m_array [N];   公众:   ,,,int 长度();   ,,,bool 设置(int 指数,T 价值);   ,,,bool 得到(int 指数,T&,值);   ,,,T&,运营商[],(int 指数);   ,,,T 运营商[],(int 指数),常量;   ,,,virtual  ~数组();   };      模板   & lt;, typename  T, int  N 比;   int  Array::长度()   {   ,,,return  N;   }      模板   & lt;, typename  T, int  N 比;   bool  Array::设置(int 指数,T 价值)   {   ,,,bool  ret =, (=0, & lt;指数),,,,(index  & lt;, N);   ,,,,   ,,,如果,ret )   ,,,{   ,,,,,,,m_array(指数),=,价值;   ,,,}   ,,,,   ,,,return 回收;   }      模板   & lt;, typename  T, int  N 比;   bool  Array:: (int 指数,T&,值)   {   ,,,bool  ret =, (=0, & lt;指数),,,,(index  & lt;, N);   ,,,,   ,,,如果,ret )   ,,,{   ,,,,,,,value =, m_array(指数);   ,,,}   ,,,,   ,,,return 回收;   }      模板   & lt;, typename  T, int  N 比;   T&, Array::运营商[],(int 指数)   {   ,,,return  m_array(指数);   }      模板   & lt;, typename  T, int  N 比;   T  Array::运营商[],(int 指数),const   {   ,,,return  m_array(指数);   }      模板   & lt;, typename  T, int  N 比;   Array数组::~ ()   {   ,,,,   }      # endif



测试。cpp源码

# include  & lt; iostream>   # include  & lt; string>   # include “Array.h"      using  namespace 性传播疾病;      int  main ()   {   ,,,Array<双,5祝辞,广告;   ,,,,   ,,,(int  i=0, i数组类模板(四十九)