c++stl理論基礎
開發工具與關鍵技術:c++、visualstudio
stl(standardtemplatelibrary,標準模板庫)是惠普實驗室開發的一系列軟體 的統稱。
現然主要出現在 c++中,但在被引入 c++之前該技術就已經存在了很長 的一段時間。 stl
的從廣義上講分為三類:algorithm(演算法)、container(容器)和 iterator (迭代器),
容器和演算法通過迭代器可以進行無縫地連線。幾乎所有的**都採 用了模板類和模板函式
的方式,這相比於傳統的由函式和類組成的庫來說提供了 更好的**重用機會。在 c++標
準中,stl 被組織為下面的 13 個頭文 件: 、、、
、、、、、 、、、和。
上圖是指演算法、迭代器和容器的關係
stl的六大元件:
容器(container) //相當於鍊錶
演算法(algorithm)
迭代器(iterator) //相當於指標
仿函式(functionobject)
介面卡(adaptor)
空間配製器(allocator)
那麼使用stl有什麼好處:
stl是c++的一部分,因此不用額外安裝什麼,它被內建在你的編譯器之內。
stl的乙個重要特點是資料結構和演算法的分離。儘管這是個簡單的概 念,但是這種分
離確實使得 stl 變得非常通用。 例如,在 stl的 vector 容器中,可以放入元素、基
礎資料型別變數、元素 的位址; stl的sort()函式可以用來操作 vector,list 等容器。
我們可以不用思考 stl 具體的實現過程,只要能夠熟練使用 stl 就 ok 了。這樣我
們就可以把精力放在程式開發的別的方面。
stl 具有高可重用性,高效能,高移植性,跨平台的優點。
5.高可重用性:stl 中大多數的**都採用了模板類和模版函式的方式實現。
6.高效能:如 map 可以高效地從十萬條記錄裡面查詢出指定的記錄,因為 map 是採用
紅黑樹的變體實現的。(紅黑樹是平橫二叉樹的一種)
7.跨平台:如用 windows的 visual studio編寫的**可以在mac os 的xcode 上直接
編譯。
關於stl三類概述
容器的概念:用來管理一組元素,容器分為兩類分別是序列式容器(sequence containers)和關聯式容器(associated containers)
序列式容器的特點:
每個元素都有固定位置--取決於插入時機和地點,和元素值無關。
序列式容器有三種分別是vector 、 deque 、 list
實現標頭檔案的標頭檔案分別是、、
關聯式容器的特點:
元素位置取決於特定的排序準則,和插入順序無關
序列式容器有四種分別是set 、 multiset 、 map 、 multimap
實現標頭檔案的標頭檔案分別是 、、、
迭代器的概念:迭代器在stl中用來將演算法和容器聯絡起來,起著一種黏和劑的作用,每乙個容器都定義了其本身所專有的迭代器,用以訪問容器中的元素。
迭代器部分主要由標頭檔案, 和 組成。
是乙個很小的標頭檔案,它包括了貫穿使用在 stl 中的幾個模板的宣告。
主要提供了迭代器使用的許多方法。
主要部分是模板類 allocator,它負責產生所有容器中的預設分配器,並
且為容器中的元素分配儲存空間,同時也為某些演算法執行期間產生的臨時物件提供
機制。演算法:stl 提供了大約 100 個實現演算法的模版函式,只要熟悉了 stl 之後,許多代
碼可以被大大的化簡,只需要通過呼叫一兩個演算法模板,就可以完成所需要的功能並
大大地提公升效率。
演算法部分主要由標頭檔案,和組成,
是所有 stl 標頭檔案中最大的乙個,它是由一大堆模版函式組成的。
TCP IP理論基礎
一 tcp ip的分層模型 osi協議參考模型,它是基於國際標準化組織 iso 的建議發展起來的,它分為7個層次 應用層 表示層 會話層 傳輸層 網路層 資料鏈路層及物理層。這個7層的協議模型雖然規定得非常細緻和完善,但在實際中卻得不到廣泛的應用,其重要的原因之一就在於它過於複雜。但它仍是此後很多協...
TCP IP理論基礎
linux中網路棧的介紹一般分為四層的internet模型。分別為應用層 傳輸層 網際層和網路介面。tcp ip實際上是乙個協同工作的通訊家族,為網路資料通訊提供通路。為方便將tcp ip協議族大致上分為三部分 1.internet協議 ip 這一部分也稱為網路層。主要包括ip icmp和arp。其...
SCM理論基礎
在乙個大型的專案中,會有很多人員,比如說專案管理者 開發人員等,人多的情況下,很可能就會在及時溝通 管理等方面出現問題,具體可以總結為 這些問題的存在,不僅會使我們的開發效率很低,做出來的產品質量也會受影響。有了scm,就很好的解決了這些問題。scmsoftwareconfiguration man...