STL总结

原创 2016年08月28日 20:17:02

一、介绍

   STL(Standard Template Library),即标准模板库,该库包含了诸多常用的基本数据结构和基本算法。
  从逻辑层次来看,在STL中体现了泛型化程序设计的思想(generic programming),引入了诸多新的名词,比如像需求(requirements),概念(concept),模型(model),容器(container),算法(algorithmn),迭代子(iterator)等。与OOP(object-oriented programming)中的多态(polymorphism)一样,泛型也是一种软件的复用技术;
   从实现层次看,整个STL是以一种类型参数化(type parameterized)的方式实现的,这种方式基于一个在早先C++标准中没有出现的语言特性--模板(template)。如果查阅任何一个版本的STL源代码,你就会发现,模板作为构成整个STL的基石是一件千真万确的事情。除此之外,还有许多C++的新特性为STL的实现提供了方便;

二、STL的六大组件

  1. 容器(Container)
    一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器;
  2. 迭代器(Iterator),
    提供了访问容器中对象的方法。例如,可以使用一对迭代器指定list或vector中的一定范围的对象。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器也可以是那些定义了operator*()以及其他类似于指针的操作符de方法的类对象;
  3. 算法(Algorithm)
    是用来操作容器中的数据的模板函数。例如,STL用sort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象,函数本身与他们操作的数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据结构上使用;
  4. 仿函数(functor)
    又称之为函数对象(function object),其实就是重载了()操作符的struct,没有什么特别的地方
  5. 迭代适配器(Adaptor)
  6. 空间配制器(allocator)
    其中主要工作包括两部分1.对象的创建与销毁2.内存的获取与释放

1.STL容器

1)序列式容器(Sequence containers)
vector、deque、list;

Vectors:
将元素置于一个动态数组中加以管理,可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快速。但是在中部或头部安插元素比较费时;

Deques:
是“double-ended queue”的缩写,可以随机存取元素(用索引直接存取),数组头部和尾部添加或移除元素都非常快速。但是在中部或头部安插元素比较费时;

Lists:双向链表,不提供随机存取(按顺序走到需存取的元素,O(n)),在任何位置上执行插入或删除动作都非常迅速,内部只需调整一下指针;

2)关联式容器(Associated containers),元素位置取决于特定的排序准则,和插入顺序无关,
set、multiset、map、multimap;

Sets/Multisets:内部的元素依据其值自动排序,Set内的相同数值的元素只能出现一次,Multisets内可包含多个数值相同的元素,内部由二叉树实现(实际上基于红黑树(RB-tree)实现),便于查找;

Maps/Multimaps:Map的元素是成对的键值/实值,内部的元素依据其值自动排序,Map内的相同数值的元素只能出现一次,Multimaps内可包含多个数值相同的元素,内部由二叉树实现(实际上基于红黑树(RB-tree)实现),便于查找;

参考:
http://www.cnblogs.com/biyeymyhjob/archive/2012/07/22/2603525.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

STL部分总结

  • 2017年09月29日 21:05
  • 137KB
  • 下载

c++STL总结

  • 2016年05月15日 11:26
  • 155KB
  • 下载

STL容器学习总结(一)

标准库中的容器分为顺序容器和关联容器。顺序容器(sequential container)内的元素按其位置存储和访问,顾名思义,这些内部元素是顺序存放的;顺序容器内的元素排列次序与元素值无关,而是由元...

STL整理总结

  • 2017年04月24日 10:04
  • 3.16MB
  • 下载

STL培训总结

  • 2013年03月25日 08:13
  • 10KB
  • 下载

STL容器学习总结(二)

关联式容器的定义 所谓关联式容器,概念上类似关联式数据库(实际上则简单许多):每项数据(元素)包含一个键值(key)和一个实值(value)。当元素被插入到关联式容器中时,容器内部数据结构(可能是RB...

STL学习总结

  • 2013年10月16日 23:14
  • 418KB
  • 下载

STL——顺序容器使用总结

1、顺序容器的定义
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL总结
举报原因:
原因补充:

(最多只允许输入30个字)