大家好,我是情報小哥~
**1、什么是STL **
STL庫英文名叫standard template library,標準模板庫,并且它屬于標準庫的一部分,前面小哥跟大家講解模板的相關知識就是為其進行鋪墊的。
STL主要是由一些模板函數和模板類構成的,其包含了C++程序開發中一些非常通用的數據結構實現與算法封裝,從而達到了非常良好的軟件復用和擴展能力,當然其背后帶來的是應用程序開發的高效,你不用再去徒手編輯各種數據結構和算法來使用,其實現的高效和穩定也減少了程序bug。
而對于C語言而言目前暫時沒有這樣的庫,大部分都是各大廠家整理的,或者是一些大牛自己開源的等等,這樣就難以形成一個比較好的標準,不太便于程序員代碼之間的交流和軟件的復用。
STL庫既然是一個庫就跟標準庫一樣,如果你覺得方便,或者有這塊需求,直接白嫖,如果你覺得STL實現得不夠好,或者需改良,也可以自己來編寫。
**2、STL的組成 **
對于STL主要分為如下6大組件 :
下面小哥簡單的介紹每個組件:
**容器 : **是一些用于存儲數據的數據結構,比如鏈表、隊列、棧等等,大部分都是類模板。
**算法 : **也就是我們平時提到的各種算法,比如排序,查找等等,大部分都是一些函數模板,
**迭代器 : **名字看起來比較高大上,其實可以認為它就是一個“智能指針”,用于遍歷容器,所以每種容器都有自己的迭代器用來遍歷。
**分配器 : **主要是用于輔助容器分配和管理空間。
**仿函數 : ** 主要是與算法結合,因函數指針無法滿足C++抽象需求,通過重載操作符(),來實現類似函數調用的過程。
**適配器 : **其名稱就可以看出,主要是用于接口的相互轉換,從而協調多種端口,容器、仿函數、迭代器都可以與適配器結合,類比電源適配器進行電壓轉換。
那么下面小哥簡單的通過一個圖來描述這6大組件之間的關聯,以便大家更好的理解。
分配器為容器分配數據空間,而迭代器就是為了遍歷容器,算法通過迭代器來訪問容器,仿函數使得算法更加的靈活,而這些適配器可以為外界提供新的接口。
**3、STL的容器的使用體驗 **
這里通過一個簡單的容器操作來體驗一下最基礎的STL使用:
參考例子:
1#include
2#include
3#include
4#include
5
6using namespace std;
7
8int main(int argc, char *argv[])
9{
10 //1、向量容器
11 vector
12
13 cout<<" vr size: "<
15 for(int Index = 0; Index < vr.size(); Index++)
16 {
17 vr[Index] = Index + 1; //直接以數組方式訪問即可
18 cout<<" vr["<
20
21 //2、隊列容器適配器(FIFO--即先進先出)
22 queue
23
24 for(int cnt = 0 ;cnt < 5;cnt++)
25 {
26 qf.push((float)cnt+0.1); //進行入隊操作
27 cout<<" Queue IN : "<<(float)cnt+0.1<
28 }
29
30 while(!qf.empty())
31 {
32 cout<<" Queue Out: "<
33 qf.pop();//進行出隊操作
34 }
35
36 return EXIT_SUCCESS;
37}
運行結果:
只需要包含相應的頭文件即可使用相應的模板來供應用程序使用,比如例子中使用的隊列等,不需要我們像C語言那樣再徒手編寫隊列了,簡直不要再方便了~
當然STL庫遠比上面復雜得多,后面小哥還會為大家慢慢道來~
**最 后 **
這里小哥就介紹了C++中白嫖STL庫。本系列文章還會持續更新,以最通俗易懂的方式跟大家談談C++,期待您的關注與支持~
-
函數
+關注
關注
3文章
4346瀏覽量
63012 -
C++
+關注
關注
22文章
2114瀏覽量
73887 -
STL
+關注
關注
0文章
86瀏覽量
18394
發布評論請先 登錄
相關推薦
STL130N6F7 MOS管現貨
X-CUBE-STL與ARM的STL的區別是什么?
effective stl中文版下載pdf
C++ STL的概念及舉例
STL算法在GIS中的應用
基于STL曲面網格重建算法
![基于<b class='flag-5'>STL</b>曲面網格重建算法](https://file.elecfans.com/web2/M00/49/83/poYBAGKhwMCALOSGAAAZ1LTBESg798.jpg)
STL內容介紹
![<b class='flag-5'>STL</b>內容介紹](https://file1.elecfans.com/web2/M00/AD/E7/wKgaomVRmM2AFSY7AAGXllIEB6k300.jpg)
評論