学习STL -- STL 简介

STL简介

STL,标准模板库,是C++语言提供的一个基础模板集合,最初由惠普实验室开发,1998年被定为国际标准,成为C++的标准库。

在C++标准中,STL 被组织为13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。STL 由空间管理器、迭代器、泛函、适配器、容器和算法6部分组成,其中前4部分服务于后两部分。

空间管理器为容器类模板提供用户自己定义的内存申请和释放功能。默认情况下,STL 采用 C/C++ 的内存管理函数或操作符来完成动态内存申请和释放。用户可以不采用这些方法,自己重新定义新策略来实现内存管理。

迭代器用来存储某个对象的地址(指向某个对象),既可以为 STL 中的算法提供数据输入,也可以用来遍历容器类或者流中的对象。指针可以认为是一个迭代器。

通过引入泛函,可以为算法提供一些策略。在 STL 中如果某个类重载了函数调用运算符“()”,则称该类为泛函类,称其对象为泛函。

适配器对象将自己与另外一个对象绑定,使对适配器对象的操作转换为对被绑定对象的操作。STL中有容器适配器、迭代器适配器和泛函适配器等。

容器是指可以包含若干对象的数据结构,并且提供少量操作接口。STL提供三种标准容器:顺序容器、排序容器和哈希容器,三种容器的存储方式完全不同,故即使相同的操作效率也不同。

顺序容器:包括向量、列表和双端队列。

排序容器:包括集合、多重集合、映射和多重映射。

哈希容器:包括哈希集合、哈希多重集合、哈希映射和哈希多重映射。

STL中,所有算法都是采用函数模板的形式提供的。接下来会介绍一些算法的具体实现。

时间: 2024-09-29 12:29:44

学习STL -- STL 简介的相关文章

STL版本简介

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 本文的参考文献为:<STL源码剖析>侯捷 (1)HP STL:所有STL的祖先版本,由C++之父Alexander Stepanov和Menge Lee共同完成,可以公开修改但必须在所有的文件中加上HP的版本生命和运用权限声明. (2)PJ STL:继承了HP STL,由P.J.Plauger开发,被微软的Visual C++采用,存放目录为\:msdev\VC98\Include能找到STL头文件,不能公开.修改.贩卖 PJ STL. (3

【c++】标准模板库STL入门简介与常见用法

一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部分,使用STL开发系统可以提高开发效率. 2.容器(Containers) 容器类是可以包含其它对象的模板类,如向量类(vector).链表类(list).双向队列类(deque).集合类(set)和映射类(map)等.其中vector.list.deque为序列式容器,set.map为关联式容器.

Mahout学习之Mahout简介、安装、配置、入门程序测试

一.Mahout简介 查了Mahout的中文意思--驭象的人,再看看Mahout的logo,好吧,想和小黄象happy地玩耍,得顺便陪陪这位驭象人耍耍了... 附logo: (就是他,骑在象头上的那个Mahout) 步入正文啦: Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现.分类.聚类等.Mahout最大的优点就是基于hadoop实现,把很多以前运行于单机上的算法,转化为了MapReduce模式,这样大大提升了算法可处理的

C++ 之高效使用STL ( STL 算法分类)

http://blog.csdn.net/zhoukuo1981/article/details/3452118 C++ 之高效使用STL ( STL 算法分类),布布扣,bubuko.com

CloudStack 4.4学习总结之简介

CloudStack 4.4学习总结之简介 一.CloudStack简介 1.CloudStack是一个开源的具有高可用性及扩展性的云计算平台. 2.会发现其实CloudStack更像是一个商业化过后的产品,有着非常好的用户界面,各个模块默认集成的很好,且安装与部署过程也相对容易一些. 3.Cloudstack支持管理大部分主流的hypervisors,如KVM,XenServer,VMware,Oracle VM,Xen等. 4.CloudStack具有商业软件所拥有的完善的用户权限管理,可以

学习排序算法简介

学习排序算法简介 学习排序(Learning to Rank, LTR)是一类基于机器学习方法的排序算法. 传统经典的模型,例如基于TFIDF特征的VSM模型,很难融入多种特征,也就是除了TFIDF特征之外,就无法融入其他种类的特征了. 而机器学习的方法很容易融合多种特征,而且有成熟深厚的理论基础,参数也是通过迭代计算出来的,有一套成熟理论来解决稀疏.过拟合等问题. LTR方法大致可以分成三类: 1) Pointwise 单文档方法 2) Pairwise 文档对方法 3) Listwise 文

Android学习5&mdash;布局简介

Android界面的布局主要有四种,分别为RelativeLayout.LinearLayout.TableLayout.FrameLayout,接下来分别介绍这些布局如何使用(为了简单起见,接下来的介绍工作中,我分别附上布局文件的代码以及效果图,供大家参考) 一:RelativeLayout <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="htt

学习笔记_svn简介

版本控制(Revision control)是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程.是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 可以简单理解: 版本控制工具:就是控制我们项目开发的代码,管理这些代码,使这些代码能够协调工作,形成一个完整的整体:可以上传代码,更新最新代码到本地: 具体做法: 三个人开发各自的代码,引入一台专门的服务器,SVN Server,一人开发代码,本地开发完直接上传到服务器(commit),SVN可以理解成代码数据库:不仅可以上

学习笔记_Ant简介

Ant,apache开源项目,基于Java的构建工具,是一个小程序.它通过自动完成所有的编译代码,运行测试以及 打包重新部署等繁琐费力的任务来帮助软件团队开发大程序: Ant的目标是自动完成所有的构建过程: 安装: 和安装JDK一样,在环境变量配置ANT_HOME: 然后在PATH加上%ANT_HOME%bin; 要求先有JDK环境,因为基于Java的构建工具,所以要先配置JDK: 配置好可以子啊控制台输入 ant -version 测试是否安装成功: 运行ant例子: 新建空文件夹: 控制台进

学习笔记_CVS简介

CVS - Concurrent Versions System(并发版本管理系统)是一个版本控制管理系统,它是SVN出现之前最为广泛使用的一个版本控制系统. CVS的优点就不多说了,总之没有它,早期的软件工程就基本无法实现,就无法凝聚广大程序员的力量.它在软件工程中的作用实在是无可比拟的. 一直到现今的版本控制的主流SVN出现之后,它才慢慢的逐步淡出我们的视线. 下载CVS服务器 网址为:<http://www.cvsnt.com/cvspro/>,下载CVSNT 并安装,当前使用的版本号为