C++之deque
From: http://blog.csdn.net/zxjzxj521/article/details/8172953
1 什么是STL
??????? STL就是C++ Standard Template Library,也就是標(biāo)準(zhǔn)模版庫(kù),是一個(gè)高效的C++程序庫(kù)。STL包含六大組件:容器(container)、算法(algorithm)、迭代器(iterator)、配置器(allocator)、適配器(adapter)和函數(shù)對(duì)象(function object)。我們?cè)趯W(xué)習(xí)這些組件時(shí),應(yīng)該按其重要程度來(lái)區(qū)別學(xué)習(xí)。重要成都由大到小是:泛型容器和泛型算法(表示任何類型和對(duì)象都可以使用這些容器和算法)>>迭代器>>配置器、適配器、函數(shù)對(duì)象。
??????? STL的主要頭文件包括13個(gè),分別是<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<numeric>、<memory>、<queue>、<set>、<stack>、<utility>,具體內(nèi)容如表1所示。
表1 STL的主要頭文件
| 頭文件 | 內(nèi)容 |
| <deque> | deque的定義 |
| <vector> | vector的定義 |
| <list> | list的定義 |
| <map> | map、multimap的定義 |
| <set> | set、multiset的定義 |
| <algorithm> | 和<numeric>定義了STL的通用算法 |
| <numeric> | 和<algorithm>定義了STL的通用算法 |
| <iterator> | 所有在容器類型中定義的迭代器的祖先定義 |
| <utility> | 定義了pair,定義了基本的iterator |
| <memory> | 主要是智能指針auto_ptr的定義和一些全局臨時(shí)內(nèi)存處理函數(shù)的定義;頭文件包含了另一個(gè)重要頭文件<xmemory>,主要是空間配置器allocator的定義 |
| <queue> | queue、priority_queue的定義 |
| <stack> | stack的定義 |
| <functional> | 通用函數(shù)對(duì)象的定義 |
- 為了方便地存儲(chǔ)數(shù)據(jù),設(shè)計(jì)了容器;
- 為了方便地遍歷、查找、替換容器中的元素,設(shè)計(jì)了算法;
- 為了方便地讓容器、算法獨(dú)立工作,設(shè)計(jì)了在二者之間起橋梁作用的迭代器;
- 為了統(tǒng)一分配和控制容器中的內(nèi)存,設(shè)計(jì)了配置器;
- 為了更好地給算法傳入?yún)?shù),設(shè)計(jì)了函數(shù)對(duì)象;
- 為了更好地?cái)U(kuò)展STL現(xiàn)有的接口,設(shè)計(jì)了適配器。
2 STL的歷史???????
??????? 在STL的發(fā)展史中,總共產(chǎn)生了5個(gè)版本。 2.1 HP STL——第一個(gè)STL版本 ??????? HP STL版本,就是惠普版本的STL庫(kù),是所有其他STL版本的鼻祖。其他版本的STL都是在此版本的基礎(chǔ)上加以改進(jìn)和實(shí)現(xiàn)的。 2.2 P.J. Plauger STL——Microsoft Visual C++的STL版本 ??????? P.J. Plauger STL版本是由P.J. Plauger個(gè)人實(shí)現(xiàn)的,是HP STL版本的繼承版本。Microsoft Visual C++中的STL庫(kù)用的就是P.J. Plauger STL版本。P.J. Plauger STL版本不是開放源代碼的,它的元代那是不能修改或銷售的。 2.3 Rouge Wave STL——Borland C++ Builder5.0的STL版本 ??????? Rouge Wave STL版本是由Rouge Wave公司開發(fā)的,也是HP STL版本的繼承版本。該版本被Borland C++ Builder5.0所采用,可惜的是由于該版本長(zhǎng)時(shí)間沒(méi)有被更新過(guò)且它不完全符合STL標(biāo)準(zhǔn),最后被棄用。 2.4 STLport——Borland C++ Builder6.0的STL版本 ??????? STLport版本的STL最開始是俄羅斯人的一個(gè)開發(fā)項(xiàng)目,主要用途是把UNIX下的SGI STL代碼一直到其他平臺(tái)的主流編譯器上,例如C++ Borland或Visual C++等。STLport版本的STL符合ANSI/C++的STL標(biāo)準(zhǔn),因此也更容易移植。Borland C++ Builder6.0中的STL用的就是STLport版本。 2.5 SGI STL——GCC的STL版本 ??????? SGI STL室友Silicon Graphics Computer System,Inc公司開發(fā)的,SGI STL同樣也是HP STL版本的繼承版本。Linux下的GCC編譯器采用的正式SGI STL版本。GCC對(duì)C++語(yǔ)言標(biāo)準(zhǔn)的支持非常好,SGI STL在Linux平臺(tái)上的性能非常出色。SGI STL是屬于開發(fā)源代碼的,因此讀者可以修改和銷售SGISTL版本。總結(jié)
- 上一篇: 用思科模拟器对交换机进行超级终端配置和T
- 下一篇: Microsoft微软官方Win10 v