(C/C++学习笔记) 二十二. 标准模板库

二十二. 标准模板库程序员

● STL基本介绍 算法

标准模板库(STL, standard template library): C++提供的大量的函数模板(通用算法)和类模板。 编程

 

※ 为何咱们通常不须要本身写模板?由于STL里已经为咱们写好了。咱们的任务是:学会使用它们。 数组

 

STL(Standard Template Library),即标准模板库,由惠普实验室(HP Labs)开发, 是一个具备工业强度的、高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。 数据结构

该库包含了诸多在计算机科学领域里所经常使用的基本数据结构和基本算法,为广大C++程序员们提供了一系列具备良好结构的通用C++组件,它们都是可扩展的应用框架,高度体现了软件的可复用性。这种现象有些相似于Microsoft Visual C++中的MFC(Microsoft Foundation Class Library). app

STL是最新的C++标准函数库中的一个子集,这个庞大的子集占据了整个库大约80%的份量。 框架

 

※ 常见的C++组件有4种:类(class)、集合和容器(collection and container)、类库(class library)、应用框架(applicationframework)。 函数

 

虽然STL是一个模板库,但其中也包含了其它一些内容。 spa

通常来讲,STL由以下的六大部分组成:容器(Containers)、算法(Algorithms) 、迭代器(Iterators) 、仿函数(Functors) 、配接器(Adapters) 、配置器(Allocators)。 指针

核心是容器(数据结构), 算法, 迭代器(指向容器元素的指针).

 

STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器)。几乎全部的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来讲提供了更好的代码重用机会。

 

在C++标准中,STL被组织为13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。

 

● 容器

容器: STL容器是一种class template, 用于管理数据的集合, 包括各类数据结构

包含在头文件<vector>, <list>, <deque>, <map>,<set>中

容器分为序列式容器(sequential container)和关联式容器(associative container)。

序列式容器主要有:vector, list, deque

关联式容器/结合式容器主要有:map,multimap,set,multiset, hash table

数据结构

描 述

实现头文件

向量(vector)

连续存储的元素`

<vector>

列表(list)

由节点组成的双向链表,每一个节点包含着一个元素

<list>

双队列(deque)

连续存储的指向不一样元素的指针所组成的数组

<deque>

集合(set)

由节点组成的红黑树,每一个节点都包含着一个元素,节点之间以某种做用于元素对的谓词排列,没有两个不一样的元素可以拥有相同的次序

<set>

多重集合(multiset)

容许存在两个次序相等的元素的集合

<set>

栈(stack)

后进先出的值的排列

<stack>

队列(queue)

先进先出的执的排列

<queue>

优先队列

(priority_queue)

元素的次序是由做用于所存储的值对上的某种谓词决定的的一种队列

<queue>

映射(map)

由{键,值}对组成的集合,以某种做用于键对上的谓词排列

<map>

多重映射

(multimap)

容许键对有相等的次序的映射

<map>

 

● 算法

算法: STL算法是function template

STL中的算法部分由头文件<algorithm>、<numeric>和<functional>组成。

STL提供了大约100个实现算法的模板函数,好比sort, search, copy, erase等, 用户能够经过调用一两个算法模板就能够完成所须要的功能.

 

● 迭代器

迭代器: STL迭代器是class template.

在面向对象编程中,一个迭代器是一个对象,更准确地说, 是指向容器元素的指针, 它容许遍历其它对象的元素,一般是容器或列表。

In object-oriented programming, an iterator is an object, or rather, which allows one to sequence through all of the elements contained in some other object, typically a container or list.

 

● C++标准库的成分

C++标准库: 可分为两部分:C++语言自己和C++标准库。

※ C++标准库中存在两套C的函数库, 一套是带有.h扩展名的, 而另外一套则没有, 而且它们确实没有太大的不一样.

相关文章
相关标签/搜索