C++中的STL
C++中的STL
文章目錄
- C++中的STL
- 一、什么是STL
- 二、STL的六大組件
一、什么是STL
-
1.STL(standard template libaray-標準模板庫):是C++標準庫的重要組成部分,不僅是一個可復用的組件庫,而且是一個包羅數據結構與算法的軟件框架
-
2.STL的發展史
-
原始版本
Alexander Stepanov、Meng Lee 在惠普實驗室完成的原始版本,本著開源精神,他們聲明允許任何人任意運用、拷貝、修改、傳播、商業使用這些代碼,無需付費。唯一的條件就是也需要向原始版本一樣做開源使用。 HP 版本–所有STL實現版本的始祖。 -
P. J. 版本
由P. J. Plauger開發,繼承自HP版本,被Windows Visual C++采用,不能公開或修改,缺陷:可讀性比較低,
符號命名比較怪異。 -
RW版本
由Rouge Wage公司開發,繼承自HP版本,被C+ + Builder 采用,不能公開或修改,可讀性一般。 -
SGI版本
由Silicon Graphics Computer Systems,Inc公司開發,繼承自HP版 本。被GCC(Linux)采用,可移植性好,可公開、修改甚至販賣,從命名風格和編程 風格上看,閱讀性非常高
二、STL的六大組件
- 容器:
- 用來存放數據的一種數據結構,本質上容器就是對數據結構的封裝,方便使用該數據結構來管理數據。
- STL中的容器,可以劃分為兩大類:序列式容器和關聯式容器
- 算法
- 算法:問題的求解步驟,以有限的步驟,解決數學或邏輯中的問題。
- STL中的算法主要分為兩大類:與數據結構相關算法(容器中的成員函數)和通用算法(與數據結構不相干)。
- STL中通用算法總共有70多個,主要包含:排序,查找,排列組合,數據移動,拷貝,刪除,比較組合,運算等
| accumulate | 元素統計 |
| binary_search | 二分查找 |
| copy | 拷貝 |
| copy_backward | 逆向拷貝 |
| copy_n | 拷貝n個元素 |
| count | 計數 |
| count_if | 在特定條件下計數 |
| equal | 判斷兩個區間相等與否 |
| fill | 填充元素 |
| fill_n | 填充元素n次 |
| find | 循環查找 |
| find_if | 循環查找符合特定條件元素 |
| find_end | 查找某個子序列的最后一次出現點 |
| find_first_of | 查找某個元素首次出現點 |
| for_each | 對區間內的每隔一元素實行某種操作 |
| is_heap | 判斷某區間是否為一個heap |
| is_sorted | 判斷某區間是否已排序 |
| lexicographical_compare | 以字典順序進行比較 |
| max | 獲取最大值 |
| max_element | 最大值所在位置 |
| merge | 合并兩個序列 |
| min | 獲取最小值 |
| min_element | 最小值所在位置 |
| next_permutation | 獲取下一個排列組合 |
| pre_permutation | 獲取前一個排列組合 |
| partial_sort | 局部排序 |
| partial_sum | 局部求和 |
| partition | 分割 |
| remove | 刪除某類元素 |
| remove_copy | 刪除某類元素并將結果拷貝到另一個容器中 |
| remove_if | 有條件的刪除某類元素 |
| replace | 替換某類元素 |
| replace_if | 有條件的替換 |
| reverse | 反轉序列 |
| sort | 排序(不穩定) |
| stable_partition | 分割并保持元素的相對次序 |
| stable_sort | 分割并保持相等元素的相對位置(穩定排序算法) |
| unique | 取出重復性元素 |
| make_heap | 創建堆 |
| push_heap | 堆插入 |
| pop_heap | 堆刪除 |
| sort_heap | 堆排序 |
- 迭代器
- 迭代器是一種設計模式,讓用戶通過特定的接口訪問容器的數據,不需要了解容器內部的底層數據結構。
- C++中迭代器本質:是一個指針,讓該指針按照具體的結構去操作容器中的數據。
- 適配器
- 適配器:又接著配接器,是一種設計模式,簡單的說:需要的東西就在眼前,但是由于接口不對而無法使用,需要對其接口進行轉化以方便使用。
- 即:將一個類的接口轉換成用戶希望的另一個類的接口,使原本接口不兼容的類可以一起工作
STL中適配器總共有三種類型:
- 容器適配器-stack和queue
- 迭代器適配器-反向迭代器
- 函數適配器
函數適配器 - 仿函數
- 仿函數:一種具有函數特征的對象,調用者可以像函數一樣使用該對象 ,為了能夠“行為類似函數”,該對象所在類必須自定義函數調用運算符operator(),重載該運算符后,就可在仿函數對象的后面加上一對小括號,以此調用仿函數所定義的operator()操作,就其行為而言,“仿函數”一次更切貼。
- 仿函數一般配合算法,作用就是:提高算法的靈活性
- 空間配置器
- 空間配置器,顧名思義就是為各個容器高效的管理空間(空間的申請與回收)的,在默默地工作
- 雖然在常規使用STL時,可能用不到它,但站在學習研究的角度,學習它的實現原理對我們有很大的幫助
總結
- 上一篇: C++中的模版
- 下一篇: s3c2440移植MQTT