范型编程

范型编程(generic programming,GP) :编写不依赖数据类型的程序,数据类型的参数化。

#include<algorithm>

find(iarray,iarray+SIZE,50);

find(intVector.begin(),intVector.end(),50);

对于上面的find函数来说,它是algorithm库中的一个函数,其实它是一个算法的实现,它可以针对数组、向量等做查找操作。


一般的算法都是作用在特定的数据结构上,而范型设计的根本思想就是想把算法和其作用的数据结构分离。范型设计的理想状态是算法是通用的,泛型的,可以作用于数组,链表,树,图等各种数据结构之上。


实现范型编程的途径:

1.利用模板,数据类型参数化

2. 多态


STL是c++中范型编程的实现:

STL是一些容器---------list,vector,set,map等的集合

STL是算法和其他一些组件的集合


STL中的主要组件:

container 容器

algorithm算法

iterator迭代器

函数对象(function object)



STL将算法和数据结构完全分离,其中算法是范型的,不与任何特定数据结构或对象类型联系在一起。




对于上面的程序来说,如果查找到数据那么intlter就会返回查找到的数据的位置;但是如果没有查找到的话,intlter就会返回向量中最后的元素的后面的位置。find查找的范围实际上是从intVectot.begin()到intVector.end()之前的这一范围。


vector容器类实例:

vector<int> v1;//定义了一个vector容器类,此时v1是空的

vector<int>::iterator iter;//定义了一个vector容器类的迭代器


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值