走近STL- STL概論

本專欄介紹

我的STL專欄,將分爲三個模塊。

  1. "走近STL"系列文章,講的是STL的基礎,主要是針對STL的常用容器Vector、List和Map快速上手,包括在使用過程中會遇到坑。我的目標是讓初接觸STL的朋友能快速上手。
  2. “走進STL”系列文章,講的是STL的深入部分,主要涉及STL的內存分配、容器源碼分析、算法源碼分析等六大塊。(哪六大塊?下面會講到)。這個系列主要是針對想要深入學習STL或者想學習一下STL的編碼技法(traits編碼技法)的朋友。多學習源碼的好處是顯而易見的。
  3. “擁抱STL”系列文章,這個模塊裏面講的是對“走進STL”模塊學習的C++其他技術支持,畢竟沒有一定的C++基礎的話,直接看源碼剖析是很痛苦的。

STL的前世今生

STL,雖然是一套程序庫,但卻不僅僅是一套一般印象中的程序庫,而是一個具有劃時代意義的、有着深厚理論基礎的發明。
說是軟件組件史上的一大突破,也當之無愧。

爲了建立數據結構與算法的一套標準,降低其間的耦合關係,以及提升各自的交互性、彈性、獨立性,C++社羣中誕生了STL.

STL是一個開源項目,所以有很多個版本。在我的這個專欄中使用SGI STL版本,不論是符號命名,還是編碼風格上,這個版本的可讀性非常高。


STL可不止有容器

對於大部分接觸過STL的人來說,對於STL的印象應該是極好的,不過大部分人可能也是簡單的將容器和STL的全部畫起了等號,最多再加上算法,畢竟我們使用STL常用到的也就那兩套頭文件。說實話我也前也是這麼認爲的。
其實STL提供了六大組件,容器和算法只是其中一部分,它們分別是:

容器、算法、迭代器、仿函數、配接器、配置器。

這些組件都是什麼?
不要急,就算知道也再看一遍吧。

  • 容器

  • 各種數據結構,如Vector、List、Map,用於存放數據。

  • 算法

  • 各種常見算法如:排序、增刪查等。從實現來看,STL算法屬於泛型函數。

  • 迭代器

  • 很驚奇,迭代器不屬於容器,也不屬於算法。

  • 扮演起容器與算法之間的“粘合劑”,是“泛型指針”。

  • 原生指針可以作爲一種迭代器,不過迭代器一般是以智能指針的形式存在的。

  • 仿真函數

  • 行爲類似函數,從實現來看是一種重載了operator()的類或模板類。

  • 函數指針可視爲狹義上的仿真函數。

  • 配接器

  • 說來話長,一種用於修飾容器、迭代器、仿真函數的東西。

  • 配置器

  • 空間配置與管理,如果要深入瞭解STL代碼,則這一塊將會是奠基石一般的存在。


來看一下STL六大組件聯合工作的圖示:
在這裏插入圖片描述

STL深入學習書籍推薦

如果是爲了應用的話呢,看我的“走近STL”系列就好了,我是個力求精簡且有趣的人,博客也不會太冗長。
如果想深入瞭解STL,可以看我的“走進STL”系列和“擁抱STL”。
如果一定要自己看書且有一定的功底,推薦《STL源碼剖析

在網上找的基本是繁體版本,這套是簡體帶目錄,畫質也不錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章