STL的基本介绍
来源:互联网 发布:同志名媛marc知乎 编辑:程序博客网 时间:2024/06/05 00:24
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 0
- STL的基本介绍
- STL的基本介绍
- stl基本的框架
- c++中的STL基本容器介绍
- STL的map介绍
- STL的Deque介绍
- STL的Vector介绍
- STL --vector的介绍
- C++的STL介绍
- STL List 的基本使用
- stl map的基本使用
- STL set的基本操作
- STL的set基本用法
- STL基本容器的使用
- STL基本容器的使用
- 关于STL不错的介绍
- STL vector的介绍(1)
- STL array的介绍(1)
- @Async的用法
- EasyAR初探
- SOUI中事件中心的使用
- storm 程序自定义slf4j日志级别控制
- Gym小记(三)
- STL的基本介绍
- Linux中的高级文本处理命令,cut命令,sed命令,awk命令
- 前段开发者JavaScript 数组常用方法
- 入门篇-SuperPowers
- Tomcat去除项目名称和端口号,直接使用ip地址访问项目的方法
- 算法系列15天速成——第十天 栈
- 通过远程终端登录虚拟机提示被拒绝
- 基于WiFi的室内定位技术的感想
- 集合分页展示,补全最后一页