泛型编程的一些理解

泛型编程,其实只是一种思想,他是想通过一种通用的或者一般的方式来代替所有或者大部分的相似的函数;

而STL(标准模板库)是他的实现的实体,也就是他体现了泛型编程,stl里面汇聚了很多老鸟的好的算法,数据结构形成的函数(我还只能理解到函数这个地步),把这些函数加到了C++里,这里是C++在C上的很大改进了;

C++实现:STL是跨平台,跨语言的,而C++只是实现STL的一种比较好的形式;最开始STL是用ada语言实现的,现在C++里实现他,发现比较好,就流行起来了;

好了,在加几个别的吧:

STL里是有6大组件组成的:容器,算法,迭代器,仿函数,适配器,空间配置器;

其他的还没有太多的感受,只能讲讲容器:

容器又包括vector,list,map,set queue等等;

书上例子大多是用vector介绍的,其他也大同小异;

1,泛型编程小例子:交换函数:

template <typename T>
void swap2(T *p,T *q)
 {    T temp;   
  temp=*p;
    *p=*q;
  *q=temp; }
以上通过加入一句template <typename T>就可以把参数设定为T了,也就是参数的类型可以是int,float,double....;
这就是泛型,感受到他的通用型了吧;
2.模板:
如果要想只调用一个函数,我们就可以实现假发,减法,乘法,比较函数等等,要怎么实现了;
看下:
int add(int a,int b)
{
  return (a+b);
}
int sub(int a,int b)
{
  return (a-b);
}
void test(int (*p)(int,int),int a,intb)
{
  int c=(*p)(a,b);
}
void main()
{
  int a=1,b=2;
test(add,a,b);
test(sub,a,b);
}
以上其实是用了函数指针,程序在编译时会为每个函数分配地址,如add,syb;有了这个地址,就可以函数地址作为参数使用了。
3,还有一个小函数:erase(*p);线性表里的,等于删除p指向的内容及其空间;写在这是自己记一下。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值