您的位置:首页 > 编程语言 > C语言/C++

C++中STL六大组件简介

2017-12-02 15:43 330 查看

一. STL简介

1、STL(Standard Template Library),即标准模板库,是一个高效的C++程序库。

2、包含了诸多在计算机科学领域里常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。

3、从逻辑层次来看,在STL中体现了泛型化程序设计的思想在这种思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。

4、从实现层次看,整个STL是以一种类型参数化的方式实现的基于模板。

二.STL组件

1.容器:

容器类是容纳、包含一组元素或元素集合的对象

七种基本容器:向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)

2.迭代器:

(1)迭代器用来在一个对象群集的元素上进行遍历。这个对象群集或许是个容器,或许是容器的一部分。迭代器的主要好处是,为所有容器提供了一组很小的公共接口。迭代器以++进行累进,以*进行提领,因而它类似于指针,我们可以把它视为一种smart pointer。

(2)比如++操作可以遍历至群集内的下一个元素,至于如何做到,取决于容器内部的数据组织形式。

(3)每种容器都提供了自己的迭代器,而这些迭代器能够了解容器内部的数据结构。

3.适配器:

(1)适配器是一种接口类为已有的类提供新的接口目的是简化、约束、使之安全、隐藏或者改变被修改类提供的服务集合

(2)三种类型的适配器:

容器适配器:用来扩展7种基本容器,它们和顺序容器相结合构成栈、队列和优先队列容器

迭代器适配器(反向迭代器、插入迭代器、IO流迭代器)

函数适配器(函数对象适配器、成员函数适配器、普通函数适配器)

4.算法:

算法,用来处理群集内的元素。它们可以出于不同的目的而搜寻、排序、修改、使用那些元素。通过迭代器的协助,我们可以只需编写一次算法,就可以将它应用于任意容器,这是因为所有的容器迭代器都提供一致的接口。

5.函数对象:

(1)函数对象也称为仿函数

(2)一个行为类似函数的对象,它可以没有参数,也可以带有若干参数。

(3)任何重载了调用运算符operator()的类的对象都满足函数对象的特征

(4)函数对象可以把它称之为smart function。

(5)STL中也定义了一些标准的函数对象,如果以功能划分,可以分为算术运算、关系运算、逻辑运算三大类。为了调用这些标准函数对象,需要包含头文件。

6.分配器:

负责空间配置与管理。从实现的角度来看,配置器是一个实现了动态空间配置、空间管理、空间释放的class template。隐藏在这些容器后的内存管理工作是通过STL提供的一个默认的allocator实现的。当然,用户也可以定制自己的allocator,只要实现allocator模板所定义的接口方法即可,然后通过将自定义的allocator作为模板参数传递给STL容器,创建一个使用自定义allocator的STL容器对象

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: