17 1 STL基本概念

2021-10-08 06:39:07 字數 2079 閱讀 7970

一、基本概念

stl(standard template library),即標準模板庫,是乙個具有工業強度的,高效的c++程式庫。它被容納於c++標準程式庫(c++ standard library)中,是ansi/iso c++標準中最新的也是極具革命性的一部分。該庫包含了諸多在電腦科學領域裡所常用的基本資料結構和基本演算法。為廣大c++程式設計師們提供了乙個可擴充套件的應用框架,高度體現了軟體的可復用性。

從邏輯層次來看,在stl中體現了泛型化程式設計的思想(generic programming),引入了諸多新的名詞,比如像需求(requirements),概念(concept),模型(model),容器(container),演算法(algorithmn),迭代子(iterator)等。與oop(object-oriented programming)中的多型(polymorphism)一樣,泛型也是一種軟體的復用技術。

從實現層次看,整個stl是以一種型別引數化(type parameterized)的方式實現的,這種方式基於乙個在早先c++標準中沒有出現的語言特性–模板(template)。如果查閱任何乙個版本的stl源**,你就會發現,模板作為構成整個stl的基石是一件千真萬確的事情。除此之外,還有許多c++的新特性為stl的實現提供了方便。

二、stl的六大元件

容器(container),是一種資料結構,如list,vector,和deques ,以模板類的方法提供。為了訪問容器中的資料,可以使用由容器類輸出的迭代器;

迭代器(iterator),提供了訪問容器中物件的方法。例如,可以使用一對迭代器指定list或vector中的一定範圍的物件。迭代器就如同乙個指標。事實上,c++的指標也是一種迭代器。但是,迭代器也可以是那些定義了operator*()以及其他類似於指標的操作符地方法的類物件;

演算法(algorithm),是用來操作容器中的資料的模板函式。例如,stl用sort()來對乙個vector中的資料進行排序,用find()來搜尋乙個list中的物件,函式本身與他們操作的資料的結構和型別無關,因此他們可以在從簡單陣列到高度複雜容器的任何資料結構上使用;

仿函式(function object,仿函式(functor)又稱之為函式物件(function object),其實就是過載了()操作符的struct,沒有什麼特別的地方

介面卡(adaptor)修飾容器或仿函式或迭代器介面的東西

空間配製器(allocator)其中主要工作包括兩部分1.物件的建立與銷毀 2.記憶體的獲取與釋放

stl六大元件之間的關係:

容器通過配置器取得資料儲存空間,演算法通過迭代器獲取容器內容,仿函式可以協助演算法完成不同的策略變化,介面卡可以修飾或套界仿函式。

1.stl容器

序列式容器(sequence containers),每個元素都有固定位置--取決於插入時機和地點,和元素值無關,vector、deque、list;

關聯式容器(associated containers),元素位置取決於特定的排序準則,和插入順序無關,set、multiset、map、multimap;

另外有其他容器hash_map,hash_set,hash_multiset,hash_multimap。

容器的比較:

2.stl迭代器

3.stl演算法

stl演算法部分主要由標頭檔案,,組成。

stl中演算法大致分為七類:

4.介面卡

基本概念:介面卡, 在stl中扮演著轉換器的角色,本質上是一種設計模式,用於將一種介面轉換成另一種介面,從而是原本不相容的介面能夠很好地一起運作。

基本型別:根據目標介面的型別,介面卡可分為以下幾類:

5.仿函式

仿函式又稱函式物件,它本質上是 一種具有函式特質的物件,它過載了operator()運算子,我們可以像使用函式一樣使用該物件。

6.空間配製器

其中主要工作包括兩部分:

STL 基本概念

stl standard template library,標準模板庫 是惠普實驗室開發的一系列軟體的統稱。現在是乙個c 軟體庫,也是c 標準程式庫的一部分,但在被引入c 之前該技術就已經存在了很長的一段時間。stl的 從廣義上講分為三類 algorithm 演算法 container 容器 和it...

STL基本概念

stl 是c 標準的模板庫,充分體現了軟體的可復用性。stl從廣義上分為三類 algorithm 演算法 container 容器 iterator 迭代器 容器和演算法通過迭代器可以進行無縫的連線,幾乎所有的 都採用了模板類和函式模板的方式,這相比傳統的由函式和類組成的庫來說提供了更好的 重用的機...

STL實用技術基本概念

stl基本概念 stl standard template library,標準模板庫 是惠普實驗室開發的一系列軟體的統稱。現然主要出現在c 中,但在被引入c 之前該技術就已經存在了很長的一段時間。stl的從廣義上講分為三類 algorithm 演算法 container 容器 和iterator ...