STL的基本介绍

STL,即Standard Template Library,不是面向对象的编程,而是一种新的编程模式:泛型编程(Generic Programming)。STL是C++标准库的组成部分,STL是很庞大复杂的系统,单单就STL就可写出厚达千页的技术书籍,所以,本章不可能做到面面俱到,重点在于介绍泛型编程的思想和本质,介绍一些常用的方法,为初学者学习STL提供一些感性认识,起到抛砖引玉的作用。
STL是一项比较新的技术,VC6是微软公司比较老的一款编译器,其对STL的支持并不是太好,因此,在本章学习时,推荐采用较新的VS2012编译器。
 
STL库是用模板(template)写出来的,模板是STL库的基础。STL大致由以下几部分组成:
容器(container)
迭代器(iterator)
适配器(Adapter)
算法(algorithm)
函数对象(functor)
配置器(allocator)
容器、迭代器、容器适配器都是用类模板实现的,迭代器用于遍历容器中的每一个元素,算法用于操作数据。
 
容器:
如果没有STL的支持,在处理一些复杂问题时,要自行设计存储模式,如数组管理,插入删除操作等,这不但很繁琐,而且bug频出,是程序出问题最多的地方。STL运用模板类库机制,为数据存储,查找和其他操作提供了一整套方案,大大提高了程序的正确性。不仅如此,类库对常用的很多操作进行了优化处理,大大提高了程序的效率。
容器是可容纳一些数据的类模板,STL中有vector、list、deque(双向队列)、set/multiset、map/multimap等容器。
 
适配器:
适配器就是Interface(接口),对容器、迭代器和算法进行包装,但其实质还是容器、迭代器和算法,只是不依赖于具体的标准容器、迭代器和算法类型,容器适配器可以理解为容器的模板,迭代器适配器可理解为迭代器的模板,算法适配器可理解为算法的模板。
常见的容器适配器有:
stack、queue(单向队列)、priority_queue
(不支持迭代器访问)
 
迭代器:
在有的专业书籍中,迭代器也称游标,可以将迭代器初步理解为广义指针,迭代器和指针功能很像,迭代器是通过重载一元的”*”和”->”来从容器中间接地返回一个值。
迭代器有5种,依次为:
随机访问迭代器(Random Access Iterator)
双向迭代器(Bidirectional Iterator)
前向迭代器(Forward Iterator)
输入迭代器(Input Iterator)
输出迭代器(Output Iterator)
 
算法:
STL包含了很多对容器进行处理的函数,它们的处理思路大体相同:使用迭代器来标识要处理的数据或数据段、以及结果的存放位置,有的函数还作为对象参数传递给另一个函数,实现数据的处理。
 
 
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我很乐意为您介绍STL的六大组件。STL(Standard Template Library)是C++的一个标准程序库。它由一些必要部分和一些有用的组件组成。六大组件分别是:容器、迭代器、算法、仿函数、适配器、分配器。 容器(Containers)是用来容纳其他对象的对象(即存储数据的数据结构),STL中最基本的概念。容器分为序列式容器和关联式容器,序列式容器以元素在容器中的位置来组织和管理元素,关联式容器以元素的关键字来组织和管理元素。 迭代器(Iterators)是一个可遍历STL容器内所有元素的对象,它定义了一种遍历STL容器元素的标准方式,使得STL算法可以操作各种不同类型的STL容器。 算法(Algorithms)是定义在容器和迭代器之上的通用的重要的操作,比如查找、排序和删除等。算法可以大大简化C++程序员的工作,使代码更加简洁和易于维护。 仿函数(Functors)是一种与函数类似的对象,可以用于一些STL算法。仿函数实际上是一个类,其中至少定义了一个()运算符,使得该仿函数对象可以像函数一样被调用。 适配器(Adapters)是一种用于修改容器接口的对象,即将一种容器适配为另一种容器接口。 分配器(Allocators)是STL容器的内存管理工具,分配器负责分配和回收STL容器内元素的内存空间。 希望这些简要介绍能够帮助您了解STL的六大组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值