STL概論

  1. STL基本概念
    ?STL(Standard Template Library,標準模板庫),是惠普實驗室開發(fā)的一系列軟件的統 稱。現在主要出現在 c++中,但是在引入 c++之前該技術已經存在很長時間了。
    ?STL從廣義上分為:容器(container)算法(algorithm)迭代器(iterator),容器和算法之間通過迭代器進行無縫連接摄狱。STL幾乎所有的代碼都采用了模板類或者模板函數,這相比傳統的由函數和類組成的庫來說提供了更好的代碼重用機會素跺。STL(Standard Template Library)標準模板庫,在我們 c++標準程序庫中隸屬于 STL的占到了 80%以上二蓝。

2.STL六大組件簡介
?STL提供了六大組件,彼此之間可以組合套用指厌。分別是容器刊愚、算法、迭代器踩验、仿函數鸥诽、適配器、空間配置器箕憾。

  • 容器:各種數據結構牡借,如vector、list袭异、deque钠龙、set、map等,用來存放數據碴里,從實現角度看沈矿,STL容器是一種class template。
  • 算法:各種常用的算法咬腋,如sort羹膳、find、copy根竿、for_each陵像。從實現的角度來看,STL算法是一種 function template寇壳。
  • 迭代器:扮演了容器與算法之間的膠合劑醒颖,共有五種類型,從實現的角度來看壳炎,迭代器是一種將 operator*图贸、operator->、operator++冕广、operator--等指針相關操作予以重載的 class templa。所有的STL容器都附帶有自己專屬的迭代器偿洁,只有容器的設計者才直到如何遍歷自己的元素撒汉。原生指針(native pointer)也是一種迭代器。
  • 仿函數:行為類似函數涕滋,可作為算法的某種策略睬辐。從實現角度來看,仿函數是一種重載了operator() 的 class 或者 class template宾肺。
  • 適配器:一種用來修飾容器或者仿函數或迭代器接口的東西溯饵。
  • 空間配置器:負責空間的配置與管理。從實現角度看锨用,配置器是一個實現了動態(tài)空間配置丰刊、空間管理、空間釋放的class tempalte增拥。
    ?STL六大組件的交互關系啄巧,容器通過空間配置器取得數據存儲空間,算法通過迭代器存儲容器中的內容掌栅,仿函數可以協助算法完成不同的策略的變化秩仆,適配器可以修飾仿函數。

3.STL優(yōu)點

  • STL 是 C++的一部分猾封,因此不用額外安裝什么澄耍,它被內建在你的編譯器之內。
  • STL 的一個重要特性是將數據和操作分離。數據由容器類別加以管理齐莲,操作則由可定制的算法定義痢站。迭代器在兩者之間充當“粘合劑”,以使算法可以和容器交互運作。
  • 程序員可以不用思考 STL 具體的實現過程铅搓,只要能夠熟練使用 STL 就 OK 了瑟押。這樣他們就可以把精力放在程序開發(fā)的別的方面。
  • STL 具有高可重用性星掰,高性能多望,高移植性,跨平臺的優(yōu)點氢烘。
    ** 高可重用性:STL 中幾乎所有的代碼都采用了模板類和模版函數的方式實現怀偷,這相比于傳統的由函數和類組成的庫來說提供了更好的代碼重用機會。關于模板的知識播玖,已經給大家介紹了椎工。
    ? 高性能:如 map 可以高效地從十萬條記錄里面查找出指定的記錄,因為 map 是采用紅黑樹的變體實現的蜀踏。
    ? 高移植性:如在項目 A 上用 STL 編寫的模塊维蒙,可以直接移植到項目 B 上。
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末果覆,一起剝皮案震驚了整個濱河市颅痊,隨后出現的幾起案子,更是在濱河造成了極大的恐慌局待,老刑警劉巖斑响,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異钳榨,居然都是意外死亡舰罚,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門薛耻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來营罢,“玉大人,你說我怎么就攤上這事昭卓》呒兀” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵候醒,是天一觀的道長能颁。 經常有香客問我,道長倒淫,這世上最難降的妖魔是什么伙菊? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上镜硕,老公的妹妹穿的比我還像新娘运翼。我一直安慰自己,他們只是感情好兴枯,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布血淌。 她就那樣靜靜地躺著,像睡著了一般财剖。 火紅的嫁衣襯著肌膚如雪悠夯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天躺坟,我揣著相機與錄音沦补,去河邊找鬼。 笑死咪橙,一個胖子當著我的面吹牛夕膀,可吹牛的內容都是我干的。 我是一名探鬼主播美侦,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼产舞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了菠剩?” 一聲冷哼從身側響起庞瘸,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赠叼,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體违霞,經...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡嘴办,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了买鸽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涧郊。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖眼五,靈堂內的尸體忽然破棺而出妆艘,到底是詐尸還是另有隱情,我是刑警寧澤看幼,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布批旺,位于F島的核電站,受9級特大地震影響诵姜,放射性物質發(fā)生泄漏汽煮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望暇赤。 院中可真熱鬧心例,春花似錦、人聲如沸鞋囊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溜腐。三九已至译株,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逗扒,已是汗流浹背古戴。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留矩肩,地道東北人现恼。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像黍檩,于是被迫代替她去往敵國和親叉袍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351