自定义模板

规则:不管是函数末班还是类模板,在证明或定义时,只能在全局命名空间或类范围内进行,不能在局部范围内,不能在函数内(包括main函数)声明或定义一个模板。

模板定义完成后,使用时需要进行实例化操作,编译器在编译时会确认模板参数具体时间哪种类型的,这个过程称为模板的实力化

函数模板的标准定义如下:

template<typename 形参名1,typename形参名2,...>
返回类型 函数名
{
    函数体
}

以下3个函数可以用一个函数模板来实现

char max(const char &a,const char &b,const char &c)
{
	char temp=(a>b)?a:b;
	return (temp>c)?temp:c;	
} 
int max(const int &a,const int &b,const int &c)
{
	char temp=(a>b)?a:b;
	return (temp>c)?temp:c;	
} 
double max(const double &a,const double &b,const double &c)
{
	char temp=(a>b)?a:b;
	return (temp>c)?temp:c;	
} 

3个重载函数的算法逻辑完全相同,只不过是输入输出的数据类型不同而已,代码的冗余度比较高

函数模板

template<typename T>

T max(const T&a,const T &b,const T &c)
{
	char temp=(a>b)?a:b;
	return (temp>c)?temp:c;	
} 

函数模板实力化

int main()
{
	int a=10;
	int b=22;
	int c=15;
	cout<<max('a','b','c')<<endl;
	cout<<max(a,b,c)<<endl;
	cout<<max(55.55,66.66,33.33)<<endl;
	return 0;
}

还有其他的一些函数模板

template<typename T> void 函数名(T a[],int n,bool type)
{
	函数体; 
}

类模板

template<typename 形参名1,typename 形参名2,...>
返回类型 类名<形参名1 ,形参名2,...>::成员函数名(形参列表)
{
	//
 } ;

类模板的实现如下
template<typename T,unsigned int N>
class Stack
{
	private:
		unsigned int index;
		T a[N];
	public:
		Stack();index(){}
		bool push(const T&valude);
		bool pop(T &value);
		bool full(){return index==N;}
		bool empty(){return index==0;}
		unsigned int size(){return index;}
		unsigned canacity(){return N;}
 } ;


template<typename T,unsigned int N> bool Stack<T,N>::push(const T&value)
{
	if((index<N-1)&&(index>=0))
	{
		a[index++]=value;
		retur true;
	}
	else
	{
		return false;
	}
}
template<typename T,unsigned int N> bool Stack<T,N>::pop(T&value)
{
	if(index==0)
	{
		
		retur false;
	}
	else
	{
		value=a[--index];
		return false;
	}
}
实例化
Stack<int ,20>a;//将Stack类模板实例化为占空间深度为20,站操作数类型为int 的类,然后在实例化对象a

Stack<char,12>ch;

Stack<float,8>f;

Stack<string,10>s;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EasyCode是一个用于快速生成代码的工具,它可以根据用户的需求生成各种不同类型的代码文件。在EasyCode中,我们可以自定义模板来满足我们的具体需求。 首先,通过打开EasyCode的设置界面,我们可以看到一个“代码模板”或类似的选项。点击进入该选项后,我们可以看到现有的一些预设的模板,例如Java类、HTML页面等。在这里,我们可以选择一个模板作为基础,然后进行修改或添加新的模板。 在自定义模板界面,我们可以对模板的内容进行编辑。一个模板通常包含了许多占位符,这些占位符将在生成代码时被实际的值替代。我们可以添加、修改或删除这些占位符,以生成符合我们需求的代码。 例如,假设我们需要一个自定义的Java类模板,在里面包含了一些常见属性和方法。我们可以在模板中定义属性的名称和类型,并在方法中预设一些基本的操作,如getters和setters。然后,当我们使用这个模板生成代码时,我们只需要按照提示输入实际的变量名和类型,EasyCode就会根据我们的输入自动生成相应的代码。 通过自定义模板,我们可以根据我们的实际需求,生成适应性更强、更高效的代码。我们可以根据自己的开发习惯和项目需求,定制属于自己的代码模板,从而提高开发效率和代码质量。 总之,EasyCode的自定义模板功能为我们提供了一个方便快捷的方式来生成我们所需要的代码。通过自定义模板,我们可以根据自己的需求生成符合标准、高效的代码,提高开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值