A Beginners guide to Templates

Function Template…

从一个不同类型的数组中查找最小元素,采用函数模板的形式。

template<class ElemType>
ElemType calcmin(ElemType elemField[],int iFieldSize)
{
	int iMin = 0;
	for (int i = 1; i < iFieldSize; i++)
	{
		if (elemField[i] < elemField[iMin])
		{
			iMin = i;
		}
	}
	return elemField[iMin];
}

该模板用于对两个不同类型的数组int[]和double[],查询最小值…

void LetsTestTheFunctionTemplate()
{
	int iField[] = {1,2,3,4,5,6};
	double dField[] = {2.5,2.31,10.23,15.2};

	int iSize1 = sizeof(iField)/sizeof(int);
	int i =calcmin(iField,iSize1);
	cout<<"i = "<<i<<endl;

	int iSize2 = sizeof(dField)/sizeof(double);
	double d = calcmin(dField,iSize2);
	cout<<"d = "<<d<<endl;
}

Class Template…

定义类模板和定义函数模板基本一样,定义一个普通类型的堆栈模板类操作不同的类型元素的堆栈。

template <typename ElemType, int iSize = 100>
class Stack{
public:
	Stack();
	~Stack(){};
	void push(const ElemType& anElement);
	void pop(ElemType& anElement);
	bool wasError() const;
	bool isEmpty() const;
private:
	ElemType elems[iSize];
	int iTop;
	bool bErrorOccd;
};

和实现普通的类一样,只是有一些稍微的不同,每次实现函数都需要添加<和>,并且需要模板类的名字不需要参数…

//构造函数
template <class ElemType, int iSize>
Stack<ElemType, iSize>::Stack():iTop(0),bErrorOccd(false)
{

}
//push函数实现…
template <class ElemType, int iSize>
void Stack<ElemType, iSize>::push(const ElemType &anElement)
{
	bErrorOccd = (iTop == iSize);
	if (!bErrorOccd)
	{
		elems[iTop++] = anElement;
	}
}
//pop函数实现
template<class ElemType, int iSize>
void Stack<ElemType, iSize>::pop(ElemType& anElement)
{
	bErrorOccd = (iTop == 0);
	if (!bErrorOccd)
	{
		anElement = elems[--iTop]; 
	}
}
//wasError函数实现
template<class ElemType, int iSize>
bool Stack<ElemType,iSize>::wasError()const
{
	return bErrorOccd;
}
//isEmpty函数实现
template<class ElemType, int iSize>
bool Stack<ElemType, iSize>::isEmpty() const
{
	return (iTop == 0);
}
//The Test code in main…
int _tmain(int argc, _TCHAR* argv[])
{
	LetsTestTheFunctionTemplate();

	Stack<int> iTheIntStack;
	for (int i = 0; i < 10; i++)
	{
		iTheIntStack.push(i);
	}
	while(!iTheIntStack.isEmpty())
	{
		int data;
		iTheIntStack.pop(data); 
		cout<<data<<" ";
	}
	cout<<endl;
	
	Stack<double,30>dTheDoubleStack;
	double d = 0.1;
	for (int i=0; i < 30; i++)
	{
		dTheDoubleStack.push((double)i+d);
	}
	while (!dTheDoubleStack.isEmpty())
	{
		double data;
		dTheDoubleStack.pop(data);
		cout<<data<<" ";
	}
	cout<<endl;
	system("pause");
	return 0;
}

  

转载于:https://www.cnblogs.com/xielechuan/archive/2012/05/24/2516068.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。
"re for beginners" 指的是为初学者设计的re(正则表达式)指南或教程。正则表达式是一种强大且灵活的文本匹配工具,用于在字符串中查找和操作特定模式的文本。 首先,学习re的基础知识是关键。了解re的语法规则和常用元字符非常重要。例如,元字符"."代表一个任意字符,"^"和"$"分别表示行的开头和结尾等。同时,学习如何使用字符类来匹配特定的字符范围,如"[0-9]"表示匹配0到9之间的任意数字等。 其次,掌握re的常用函数和方法。在Python中,我们可以通过re模块来使用正则表达式。例如,re.search()和re.match()函数用于在字符串中查找匹配模式的子字符串,re.findall()函数用于返回所有匹配的字符串列表。此外,还有re.sub()函数用于替换匹配的字符串。 在学习re时,练习是非常重要的。通过编写各种模式和测试字符串的正则表达式,可以帮助我们更好地理解其工作原理。同时,网上有许多在线正则表达式测试工具,可以帮助我们实时调试和验证我们的表达式。 最后,持续学习和实践re是提高技能的关键。正则表达式非常强大且灵活,可以在各种应用中使用。通过不断学习和解决实际问题,我们可以逐渐掌握更高级的正则表达式技巧和技术。 总结来说,“re for beginners”是一个为初学者设计的正则表达式指南或教程。通过学习re的基础知识、掌握常用函数和方法、进行练习和实践,我们可以逐步提升自己的正则表达式技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值