c STL 005 分配器 泛型程式設計 模版基礎

2021-10-07 22:43:36 字數 2623 閱讀 9451

分配器 allocator

用於給stl容器進行資料空間的分配,每乙個容器都有預設的分配器,以保證容器能夠取得指定的記憶體。

容器在構造時,會將預設的分配器作為預設引數對容器進行構造。

*operator new 和malloc

*operator new c++範圍,可以過載,使用::operator delete進行釋放。

malloc c函式,不可過載,使用free進行釋放記憶體。

不同的編譯器設計的分配器可能會有不同,一般使用的是以上的其中一種。

所有容器,預設第二個引數為allocator分配器。這個預設的分配器與容器是相匹配的。

使用的時候一般使用預設的分配器就可以,不需要自己單獨指定,如果要指定使用哪個分配器也是可以的,將在容器構造器的相應引數位置傳入即可。

oop和gp

oop 物件導向程式設計:

將資料data和方法methods都放置在class中

class

gp 泛型程式設計

將資料data和methods 分開,data放置在容器中,methos使用演算法來進行,

兩者通過迭代器iterator來進行溝通,即演算法methods通過iterator來對容器進行操作。

操作符過載

不可以過載的操作符:::.

.*?:

操作符過載基本語法:

operator操作符()

示例:operator+()

operator<<()

operator->()

模版

模版引數可以是多個
類模版

template//typename

class

示例:

template

<

typename t>

class

complex

complex& opeerator +=(

const complex&);

t real()

const

t imag()

const

private

: t re,im;

friend complex&

__doapl

(complex*

,const complex&);

}

使用:

complexc(2,3);

complexc1(1.2,3.56);

函式模版

template//class

返回值 函式名(引數列表)

示例:

templateconst t& min(const t& a,const t& b)

}

模版的泛化和特化

模版的特化和偏特化:

1. 為了為某些特定的場景使用而進行的特化處理。這樣做會比泛化模版的執行效率更高。同時還可以實現更多功能。

2. 模版的特化更注重於細節和功能的專注,就像以前做餅,做麵,做公尺都用乙個鍋,特化之後做餅的乙個鍋,做麵的乙個鍋,做公尺的乙個鍋。不論是實現還是功能上都做到了專用。

當模版引數列表中引數個數為多個的時候,會有特化,偏特化的分類:

泛化: 最基本的模版,型別可以任意指定的模版

特化: 指定型別的模版,就會變成特化的模版。

(分為全特化和偏特化)

全特化: 引數型別全部被指定

偏特化: 部分引數型別被指定或者範圍的指定

偏特化: 指定部分型別的模版,或者型別訪問許可權被限制的模版,就會成為偏特化的模版。

//模版的泛化

template

<

typename t1,

typename t2>

class

teclass

private

: t1 ta;

t2 tb;};

//全特化,所以<>中不再有引數列表,而是將指定的引數列表放置在class中進行定義

template

<

>

class

teclass

<

int,

char

>

private

:int ta;

int tb;};

//偏特化,只有未被指定型別的引數出現在模版引數列表中

template

<

typename t2>

class

teclass

<

char

,t2>

private

:char ta;

t2 tb;};

/**使用示例:

teclasst1(12.9,91.2); //泛化

teclasst2(99,'m'); //全特化

teclasst3('n',0.99); //偏特化

*/

11 2 分配記憶體

這篇主要說一說c語言中幾個分配記憶體的函式 malloc calloc 和free 內容在書12.4章.c語言可以通過庫函式分配和管理記憶體.下面的 都為變數分配了一些記憶體.float f char str this is a string int arr 100 靜態資料在程式載入記憶體時分配記...

RQNOJ 140 分配時間

小王參加的考試是幾門科目的試卷放在一起考,一共給t分鐘來做。他現在已經知道每門科目花的時間和得到的分數的關係,還有寫名字要的時間 他寫自己的名字很慢 請幫他算一下他最高能得幾分。總分一定時,第一門科目成績盡量高,第一門科目成績也一樣時,第二門科目成績盡量高 以次類推。如果放棄某一門的考試 花的時間為...

luogu P4014 分配問題

關於構圖 首先,這是一道最小費用最大流和最大費用最大流 就是最小費用最大流,但建邊時的費用取負,就可以保證得到乙個最小的費用,再取反,就得到最大費用 的題目,比較裸。構圖 1.首先有乙個超級源點和匯點 st 0,ed 2 n 1。2.源點向每乙個人建一條流量為1,費用為0的邊,表示每乙個人只能選乙份...