C 之STL(一)初識

2021-10-16 21:37:58 字數 2187 閱讀 8660

standard template library 標準模板庫

容器、演算法、迭代器、仿函式、介面卡、空間配置器

容器和演算法之間通過迭代器進行無縫連線

技術基於模板實現

容器:各種資料結構,vector、list、deque、set、map等

演算法:如sort、find、copy等

迭代器:扮演容器演算法間的膠合劑

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

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

空間配置器:負責空間的配置和管理

stl容器分為序列式容器和關聯式容器兩種

序列式容器:每個元素均有固定位置、強調值得排序。如陣列、鍊錶、棧、佇列等

關聯式容器:二叉樹結構,無嚴格物理上得順序關係

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

質變演算法:運算過程中,更改區間內元素內容,如拷貝,替換,刪除

非質變演算法:如查詢、遍歷

迭代器提供一種方法,使之能夠依序尋訪某個容器所含得各個元素,而又無須暴露該容器得內部表示方式。每個容器都有自己專屬得迭代器,使用方法類似指標

種類:輸入迭代器:對資料唯讀 支援++ == !=

輸出迭代器:對資料只寫 支援++

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

雙向迭代器:讀寫操作,前後均可,支援++ –

隨機訪問迭代器:讀寫操作,可以以跳躍方式訪問任意資料,功能強,支援++ – [n] -n < <= > >=

#include

#include

#include

#include

using

namespace std;

void

myprint

(int val)

//vector容器存放內建資料型別

void

test01()

//第二種遍歷方式

for(vector<

int>

::iterator it = v.

begin()

;it != v.

end(

);it++

)//第三種遍歷方式

for_each

(v.begin()

,v.end()

,myprint);}

intmain()

#include

#include

#include

#include

using

namespace std;

//vector容器存放自定義資料型別

class

person

string m_name;

int m_age;};

//存放自定義資料型別

void

test01()

}//存放自定義資料型別得指標

void

test02()

}int

main()

#include

#include

#include

#include

using

namespace std;

//存放自定義資料型別

void

test01()

//將小容器插入到大容器

v.push_back

(v1)

; v.

push_back

(v2)

; v.

push_back

(v3)

; v.

push_back

(v4)

;//遍歷 這裡it並不能進行兩次解引用 因為其本質和陣列還是不一樣得 陣列名是指標 而這裡不是

for(vectorint>>

::iterator it = v.

begin()

; it != v.

end(

); it++

) cout

C 學習(17) 初識STL

stl大體分為六大元件 分別是容器 演算法 迭代器 仿函式 介面卡 配接器 空間配置器 容器 各種資料結構,如vector list deque set map等,用來存放資料 演算法 各種常用的演算法,如sort find copy for each等 迭代器 扮演了容器與演算法之間的膠合劑 仿函...

STL 初識STL 系列1

c primer plus 第16章讀書筆記。總結 1.vector 模板 size swap swap yyy begin end 語法 vector iterator pd scores.begin for auto pd scores.begin pd scores.end pd push b...

初識C 標準模板庫STL

在c 程式設計中常見到 stl 這個英文縮寫,其實這是c 的標準模板庫 stl standard template library 的意思,它其實裡面包含了很多存放資料並操作各種資料結構的模板,也叫容器,這些容器可以重複使用,並且整合了大量的優秀演算法,大大簡化了我們程式設計時組織資料結構的步驟,這...