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总结之set/multiset和map/multimap

set和Multiset:

stl总结笔记

  • 2015-06-25 13:42
  • 10KB
  • 下载

STL整理总结

  • 2017-04-24 10:04
  • 3.16MB
  • 下载

STL vector<bool>总结

这里是vector的总结,详细原文可看后面链接。 class template specialization std::vector template > class ve...

STL培训总结

  • 2013-03-25 08:13
  • 10KB
  • 下载

【C++】STL常用容器总结之二:顺序容器

3、顺序容器所谓序列式容器,其中的元素都可序(ordered),但未必有序(sorted)。array为C++语言内置的序列容器,STL另外提供vector、list、deque、stack、queu...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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