學習STL第一天 STL簡介

2021-08-21 14:11:33 字數 1671 閱讀 3009

有位老師說c++ 就是  c語言 + 類(物件導向程式設計) + 模板(泛型程式設計),而stl就是模板的乙個例子。

因此,我學完了c++基礎後,開始學習stl。

指的是把一些常用的資料結構,演算法,等等封裝起來給大家使用的東西。

stl可分為容器(containers)、迭代器(iterators)、空間配置器(allocator)、配接器(adapters)、演算法(algorithms)、仿函式(functors)六個部分。

經典的資料結構數量有限,但是我們常常重複著一些為了實現向量、鍊錶等結構而編寫的**,這些**都十分相似,只是為了適應不同資料的變化而在細節上有所出入。stl容器就為我們提供了這樣的方便,它允許我們重複利用已有的實現構造自己的特定型別下的資料結構,通過設定一些模板類,stl容器對最常用的資料結構提供了支援,這些模板的引數允許我們指定容器中元素的資料型別,可以將我們許多重複而乏味的工作簡化。

容器部分主要由標頭檔案,,,,,和組成。對於常用的一些容器和容器介面卡(可以看作由其它容器實現的容器),可以通過下表總結一下它們和相應標頭檔案的對應關係。

序列式容器

向量(vector) 連續儲存的元素

列表(list) 由節點組成的雙向鍊錶,每個結點包含著乙個元素

雙端佇列(deque) 連續儲存的指向不同元素的指標所組成的陣列

介面卡容器

(stack) 後進先出的值的排列

佇列(queue) 先進先出的值的排列

優先佇列(priority_queue) 元素的次序是由作用於所儲存的值對上的某種謂詞決定的的一種佇列

關聯式容器

集合(set) 由節點組成的紅黑樹,每個節點都包含著乙個元素,節點之間以某種作用於元素對的謂詞排列,沒有兩個不同的元素能夠擁有相同的次序

多重集合(multiset) 允許存在兩個次序相等的元素的集合

對映(map) 由對組成的集合,以某種作用於鍵對上的謂詞排列

多重對映(multimap) 允許鍵對有相等的次序的對映

大家都能取得的乙個共識是函式庫對資料型別的選擇對其可重用性起著至關重要的作用。舉例來說,乙個求方根的函式,在使用浮點數作為其引數型別的情況下的可重用性肯定比使用整型作為它的引數型別要高。而c++通過模板的機制允許推遲對某些型別的選擇,直到真正想使用模板或者說對模板進行特化的時候,stl就利用了這一點提供了相當多的有用演算法。它是在乙個有效的框架中完成這些演算法的——你可以將所有的型別劃分為少數的幾類,然後就可以在模版的引數中使用一種型別替換掉同一種類中的其他型別。

下面要說的迭代器從作用上來說是最基本的部分,可是理解起來比前兩者都要費力一些(至少筆者是這樣)。軟體設計有乙個基本原則,所有的問題都可以通過引進乙個間接層來簡化,這種簡化在stl中就是用迭代器來完成的。概括來說,迭代器在stl中用來將演算法和容器聯絡起來,起著一種黏和劑的作用。幾乎stl提供的所有演算法都是通過迭代器訪問元素序列進行工作的,每乙個容器都定義了其本身所專有的迭代器,用以訪問容器中的元素。

後面的暫時不學,也就先不寫出來了。

第一天 vxlan簡介

vxlan是什麼?有什麼作用?作用 用於構建大二層網路,實現虛擬機器跨地域的動態遷移,實現網路隔離的擴充套件,減少arp表的氾濫,同時保護資料的安全。如何更一步理解vxlan基本概念?答 lan是區域網,乙個區域網中太大了,通過vlan來進行虛擬成多個小區域網,但是隨著雲計算的演進,使得不同地域之間...

AIX學習筆記 第一天簡介

1 ibm廠商伺服器分為 system x系列 x86,pc server 聯想 system p系列 power,小型機 system i系列 i5,中型機 system z系列 大型機 2 ibm處理器 power處理 ibm system p和i系列 power 1 2 3 4 5 6 7 8...

學習第一天

知識是學會的,不是教會的 程式設計 驗證性或體驗性 創造性 學程式設計的4個階段 1.能看懂別人的 除錯別人的 2.能修改別人的 3.能拷貝別人的 做自己的事 4.能自己設計編寫 方法 多讀 做記錄 執行 修改 執行 練習,光說不練假把式 刷oj總結 寫部落格或許是個不錯的選擇 學生和已經工作的程式...