C 研發 泛型程式設計 第二講 初步認識STL

2021-10-19 14:09:43 字數 1595 閱讀 6959

不管是物件導向,還是泛型程式設計,這兩種思想的目的都是:

降低模組與模組之間的耦合度,提高復用性。

但是,一直沒有乙個標準,

為了建立資料結構和演算法的一套標準,誕生了stl。

stl大體分為六大元件,分別是:容器、演算法、迭代器、仿函式、介面卡(配接器)、空間配置器

容器:各種資料結構,如vector、list、deque、set、map等,用來存放資料。

演算法:各種常用的演算法,如sort、find、copy、for_each等

迭代器:扮演了容器與演算法之間的膠合劑。

仿函式:行為類似函式,可作為演算法的某種策略。

介面卡:一種用來修飾容器或者仿函式或迭代器介面的東西。

空間配置器:負責空間的配置與管理。

容器:置物之所也

stl容器就是將運用最廣泛的一些資料結構實現出來

常用的資料結構:陣列, 鍊錶,樹, 棧, 佇列, 集合, 對映表 等

這些容器分為序列式容器關聯式容器兩種:

序列式容器:強調值的排序,序列式容器中的每個元素均有固定的位置。

關聯式容器:二叉樹結構,各元素之間沒有嚴格的物理上的順序關係

演算法:問題之解法也

有限的步驟,解決邏輯或數學上的問題,這一門學科我們叫做演算法(algorithms)

演算法分為:質變演算法非質變演算法

質變演算法:是指運算過程中會更改區間內的元素的內容。例如拷貝,替換,刪除等等

非質變演算法:是指運算過程中不會更改區間內的元素內容,例如查詢、計數、遍歷、尋找極值等等

迭代器:容器和演算法之間粘合劑

提供一種方法,使之能夠依序尋訪某個容器所含的各個元素,而又無需暴露該容器的內部表示方式。

每個容器都有自己專屬的迭代器

迭代器使用非常類似於指標,初學階段我們可以先理解迭代器為指標

迭代器種類:

種類功能

支援運算

輸入迭代器

對資料的唯讀訪問

唯讀,支援++、==、!=

輸出迭代器

對資料的只寫訪問

只寫,支援++

前向迭代器

讀寫操作,並能向前推進迭代器

讀寫,支援++、==、!=

雙向迭代器

讀寫操作,並能向前和向後操作

讀寫,支援++、–,

隨機訪問迭代器

讀寫操作,可以以跳躍的方式訪問任意資料,功能最強的迭代器

讀寫,支援++、–、[n]、-n、<、<=、>、>=

常用的容器中迭代器種類為雙向迭代器,和隨機訪問迭代器

C 研發 泛型程式設計 第十二講 函式物件

函式物件就是我們說的仿函式。過載函式操作符的類,其物件稱為函式物件。函式物件使用過載的 時,行為類似函式呼叫。本質 函式物件 仿函式 是乙個類建立出的物件,不是乙個函式,只是像函式。函式物件在使用時,可以像普通函式那樣呼叫,可以有引數,可以有返回值 函式物件超出普通函式的概念,函式物件可以有自己的狀...

C 研發 泛型程式設計 第十九講 常用集合演算法

功能描述 函式原型 示例 include include class myprint void test01 vectorvtarget 取兩個裡面較小的值給目標容器開闢空間 vtarget.resize min v1.size v2.size 返回目標容器的最後乙個元素的迭代器位址 vector ...

C 泛型程式設計總結(二)

目錄 7.插入insert 的變形 8.function object 9.設計泛型演算法function object adapter與insertion adapter 10.關聯容器map和set 11.iostream iterator 7.插入insert 的變形 8.function o...