STL六大组件

一、STL六大组件

STL提供六大组件,它们之间可以相互组合使用。

1、容器(containers)

容器用来存放数据,包括各种数据结构,如vector,list,deque,set,map等。从实现的角度来看,STL容器是一种class template。

2、算法(algorithms)

算法包括各种常用的sort,search,copy,erase, find等等。才实现的角度来看,STL算法是一种function template。

3、迭代器(iterators)

迭代器作为“泛型指针”,扮演容器和算法之间的粘合剂,用来连接容器和算法。从实现角度来看,迭代器是一种将operator*,operator->,operator++,operator--等指针相关操作进行重载的class template。所有的STL容器都带有自己专属的迭代器。原生指针也是一种迭代器。

所谓的原生指针就是我们定义的最普通的指针,形如  类型名  *指针名,类型名可以是基础类型int,double等,也可以是一个类。

当一个类将*和->操作符进行重载时,虽然也可以进行类似指针的操作,但是它已经不是原生指针。

4、仿函数(functors)

仿函数是让一个类看起来像一个函数。其实就是一种重载了operator()的class或者class template。

5、配接器(adapters)

一种用来修饰容器,仿函数或者迭代器的接口的东西。配接器修改类的接口,使原来不相互匹配的两个类可以相互匹配,进行合作。

6、配置器(allocators)

配置器主要负责空间的配置和管理。从实现角度来看,配置器是一个实现了动态空间配置、空间管理、空间释放的class template。

二、STL六大组件之间的关系

STL以源代码的形式供应,而非二进制文件。按照C++ Standard的规定,所有标准头文件不再有扩展名。但是由于向下兼容,有的STL版本还是提供有和无扩展名的两种文件。

六大组件中,容器通过配置器获取数据存储空间。算法通过迭代器获取容器内容。仿函数协助算法完场策略变化。配接器修饰或者套接仿函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值