0%

STL

什么是STL?STL : standard Template Library 标准模板库,STL是C++的一个重要组成部分。

STL包含了众多头文件 :

头文件名称 类型
<algorithm> 算法
<deque> 容器
<functional> 仿函数
<iterator> 迭代器
<vector> 容器
<list> 容器
<map> 容器
<memory.h> 智能指针
<numeric> 数值算法
<queue> 容器
<set> 容器
<stack> 容器
<utility> 比较符 + pair

浏览完以上这一个表格,可以简单了解到STL的组成。

六大部件

STL主要包含六个部件:

  • 容器 containers 是一个class template
  • 分配器 allocators 是一个 class template
  • 算法 algorithms 是一个 function template(用起来像函数)
  • 迭代器 iterators 是一个 class template
  • 适配器 adapters 是一个 class template
  • 仿函数 functors 是一个 class template

简单介绍

容器

容器是数据的承载,容器的设计使得我们”看不到”内存

分配器

分配器为容器分配内存回收内存,使得我们不需要插手容器的内存管理

算法

算法是模板函数,独立于容器,更加泛化。(有一些容器里有同名重新处理过的函数)

迭代器

算法作用于容器的中介,存取数据的一种泛化指针,本质是一种用起来像指针的对象

适配器

容器 / 仿函数 / 迭代器的转换,设计思想:适配器设计模式

仿函数

作用于容器元素的一种用起来像函数的类

设计思想

GP模板编程思想:容器与算法分开。

相对的,OO编程思想:把成员变量和成员函数封装起来。

简单代码演示

1
2
3
vector<int,allocator<int>> vi(ia,ia+6); //容器 分配器
cout<<count_if(vi.begin(),vi.end(),not1(bind2nd(less<int>(),40)));
//less<int>()原本是a和b比较,bind2nd适配器绑定第二参数,用a和40比,not1适配是变成了大于等于条件

学习自 : 侯捷 STL

二叉树遍历

Website

博客文章主要目的是分享和记录。

分享给需要学习的同学,记录自己学习路上的点滴。

相信大家对于二叉树的定义以及结构,在本科《数据结构与算法》课程中或者在其他同学的博客中有所了解。在此,不在过多地回顾课本理论知识。

阅读全文 »