分配器 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的邊,表示每乙個人只能選乙份...