(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擴展名的, 而另外一套則沒有, 而且它們確實沒有太大的不一樣.

相關文章
相關標籤/搜索