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