C 小工修煉手冊 (模板 STL簡介)

2021-09-29 00:26:59 字數 1760 閱讀 5157

導致記憶體洩露的常見場景有哪些

1.在申請空間之後忘記釋放空間,這樣的話就會導致記憶體洩露

2.一些誤操作,比如淺拷貝問題,兩個指標指向一塊空間,但是其中乙個指標的空間未被釋放

3.異常安全問題,在空間未釋放之前就被異常捕獲,而去執行其他**,沒有釋放空間

記憶體洩漏的危害:長期執行的程式 出現記憶體洩漏 ,影響很大,就會導致相應越來越慢,導致最終卡死

記憶體洩露一般分為兩種一種是堆上使用者申請的空間資源洩露,另一種就是系統資源洩漏,指程式使用是系統分配的資源,

比如套接字,檔案描述符,這些系統資源的浪費,嚴重可導致系統效能降低,系統執行不穩定

泛型程式設計:編寫與型別無關的通用**,是**復用的一種手段。模板是泛型程式設計的基礎。(並沒有說模板就是泛型程式設計)

模板分為函式模板和類模板

//模板的定義

template

<

classt,

class

t2>

template

<

typename t,

typename t2>

template

<

classt,

typename t2>

三種都可以

但是不可以template

<

class

t1,t2>

//這個識別不來哦

模板隱式例項化推演:

template

<

class

t1>

t1 add

(t1 a, t1 b)

intmain()

1.乙個非函式模板函式可以和 同名函式模板同時存在

2.對於非模板函式和同名函式模板,如果其他條件都相同,再呼叫的時候,優先呼叫非函式模板的函式,而不是呼叫模板函式產生的例項。因為太慢了。如果模板可以產生乙個具有更好的匹配的函式例項

3.模板函式不允許進行自動型別的轉化

int

add(

int a,

int b)

template

<

classt1,

class

t2>

t1 add

(t1 a, t2 b)

intmain()

;template

<

class

t>

//成員函式的類外實現

void date

::add()

stl:提供的標準模板庫的簡稱

通俗的將:對書記結構的封裝,包含一些通用型別的演算法

容器:用來存放元素的一種資料結構,容器的本質:對資料結構的一種封裝

迭代器:可以讓演算法透明化的運算元據(透明化:演算法不關心容器底層的結構)

演算法:與資料結構相關的演算法 ----容器中的成員函式

通用型別的演算法----泛型演算法

介面卡:對其他結構的一種封裝,類似於生活中的電源轉換口

空間配置器:管理空間,申請釋放,以及對空間的管理

仿函式(函式物件):像函式呼叫一樣的物件,可以定製函式功能,或者使函式功能更加靈活

C 小工修煉手冊 (vector實現)

t 如果t代表的是內建型別,t 代表的是 0 如果t代表的是自定義型別,那麼t 代表的就是呼叫這種型別的無參建構函式 erase 函式用迭代器引數,刪除元素之後又會返回乙個迭代器,按道理來說迭代器不應該失效的,但是stl讓迭代器失效了,這樣做的目的就是,假如你刪的是最後乙個元素,尾位置只需要前移,這...

STL(簡介模板庫)

stl standard template library,標準模板庫 stl被內建在你的 編譯系統之內。stl的版本很多,常見的有hp stl pj stl sgi stl等。在c 標準中,stl被組織為下面的13個頭檔案 algorithm deque functional iterator a...

STL標準模板庫簡介h

容器 各種資料結構,如vector,list,deque,set,map等資料結構 演算法 各種常用演算法,如sort,find,copy,each等 迭代器 扮演了容器和演算法之間的膠合劑 仿函式 行為類似函式,可作為演算法的某種策咯 介面卡 一種用來修飾容器或者仿函式或迭代器介面的東西 空間介面...