C++ STL标准模板库

标准模板库
    STL(StandardTemplate Library),即标准模板库,是一个具有工业强度的、高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法,为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。这种现象有些类似于Microsoft Visual C++中的MFC(MicrosoftFoundation Class Library),或者是Borland C++ Builder中的VCL(VisualComponent Library)。
    STL是最新的C++标准函数库中的一个子集,这个庞大的子集占据了整个库大约80%的分量。
STL的引入
    1. STL(StandardTemplate Library,标准模板库)是惠普实验室开发的一系列软件的统称。
    2. STL提供了一系列具有良好结构的通用C++组件,这些组件提供强大的功能。标准库的设计必须确保所有的模板算法既能操作库中的数据类型,也能操作C++固有的数据类型。例如,所有的算法都适用于普通指针类型。库中各组件功能是独立的,或者说,用户可以自己设计算法操作库提供的数据结构,也可以使用标准库的算法操作自定义的数据类型。
STL的组成
    1. STL是一个模板库,但其中也包含了许多个部分。一般来说,STL由如下的六大部分组成:容器(Containers)、算法(Algorithms)、迭代器(Iterators)、仿函数(Functors)、配接器(Adapters)、配置器(Allocators)。
    2. STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器)。几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
1.算法
算法是用来操作容器中的数据的模板函数。例如,STL用sort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象。函数本身与他们操作的数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据结构上使用。
    1. STL提供了大约100个实现算法的模板函数,用户可以通过调用一两个算法模板就可以完成所需要的功能,这样大大地提高了用户使用C++进行程序设计的效率。
    2. 一般来说,STL中的算法部分主要由头文件<algorithm>、<numeric>和<functional>组成。其中,头文件<algorithm>由一大堆模板函数组成,常用的函数涉及比较、交换、查找等。
    3. 头文件<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。头文件<functional>中则定义了一些模板类,用以声明函数对象。

这里写图片描述

2.容器
容器是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器。
    1. 容器部分主要由头文件<vector>、<list>、<deque>、<set>、<map>、<stack>和<queue>组成。对于常用的一些容器和容器适配器(可以看作由其他容器实现的容器)。
3.迭代器
迭代器提供了访问容器中对象的方法。例如,可以使用一对迭代器指定list或vector中的一定范围的对象。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器也可以是那些定义了operator*()以及其他类似于指针的操作符地方法的类对象。
    1. 迭代器实际上是一种泛化指针,如果一个迭代器指向了容器中的某一成员,那么迭代器将可以通过自增自减来遍历容器中的所有成员。迭代器是联系容器和算法的媒介,是算法操作容器的接口。
    2. 简单来说,几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了它本身所专有的迭代器,用以存取容器中的元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TxNet.Ltd.

你的赞同是对我的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值