21天學通C 閱讀筆記6(模板 標準模板庫)

2021-06-29 05:04:09 字數 2431 閱讀 2483

模板類

通過將型別作為引數來建立新的例項。

eg.template//class

表示模板的引數是型別,

t表示引數化型別

class classa;

template

voidclassa::methoda(t t){};

classaintobj;

intobj.methoda(2);

模板類友元

1. 非模板友元類或函式 2.

通用模板友元類或函式 3.

特定型別模板友元類或函式

eg.template

class classa;

//該函式為非模板友元函式

voidmethodf1(classat);

classaintclassa;

methodf1(intclassa);

//該函式為通用模板友元函式

template

voidmethodf2(classat);

classaintclassa;

methodf2(intclassa);

模板類靜態成員

eg.template

class classa;

static int staticparam;

};//

通過完整的模板認證完成靜態成員變數的初始化

template

intclassa::staticparam = 0;

注:每乙個型別有乙個

staticparam

,例如classa

型別的所有物件共享乙個

staticparam

,classa

型別的所有物件共享另乙個

staticparam。

模板函式

eg.template

void methoda(tt){};

int idata = 0;

methoda(idata);

標準模板庫(

stl)

基於模板的容器類庫,包括鍊錶、列表、佇列、堆疊、常用排序查詢演算法。

vector

向量容器:可自增長,主要用於順序讀寫

eg.vectorvint(50);//

分配50

個元素的記憶體空間給

vector

,vint.size() = 50

vint.empty();//

判斷向量是否為空

vint.erase(vint.begin()+ 10);//

刪除第10

個元素

vint.push_back(10);//

最末尾增加乙個元素

list

對元素的頻繁插入或刪除進行了優化,雙向鍊錶

listlint;

lint.push_back(10);//

最末尾增加乙個元素

for(list::const_iteratorit = lint.begin(); it != lint.end(); it++)

deque

繼承了vector

的順序讀寫效率,優化了前端後端操作。主要用於在一端或兩端進行插入、刪除

stack

堆疊,可以在尾端增長和收縮的連續分配區域,後入先出

map對映容器,

class classa

classa obj1;

mapmap_classa;

map_classa[obj1.getname()]= obj1;

classaobj2 = map_classa["name"];//

檢索key="name"

的記錄

//遍歷

for(map::const_iterator it = map_classa.begin(); ..; ..)

演算法類:

函式物件:定義過載運算子

()的乙個類的例項

template

class print

}printprintobj;

printobj(10);//

類物件作為函式呼叫

不變序列演算法:不改變序列中的元素,如

for_each()

、find()

、search()

、count()

vectorvint(5);

for_each(vint.begin(),vint.end(), printobj);//

對vint

中的每乙個元素呼叫

printobj

改變序列演算法:改變序列中的演算法,填充或重新安排集合,如

fill()

fill(vint.begin(),vint.begin() + 2, 1);

fill(vint.begin()+ 2, vint.end(), 2);

結果:vint = 1 1 2 2 2

21天學通C 閱讀筆記3

陣列 陣列是資料存放位址的集合,每個位址儲存相同型別的資料。int intarray 10 int 型別為4 個位元組,編譯器會分配 4 10 個位元組的連續記憶體給該陣列 陣列初始化 int intarray 2 一維陣列宣告 int intarray 2 對兩個元素都賦值 int intarra...

21天學通C語言 學習筆記(4)

本章將重點介紹c語言提供的三組基本資料型別的使用,包括 整型 字元型和浮點型。c語言的其他高階資料型別實質上都可以視為這些基本資料型別的組合。通過本章的學習,要掌握以下知識 c語言定義了4種整型資料型別以表示不同大小的整數數值。本節將介紹各種整型資料型別的位元組長度 整型常量和整型變數的使用,以及使...

21天學通C語言 學習筆記(7)

為了處理更複雜的資料,c語言還定義了一些功能更強大的復合資料型別,如陣列型別 結構體型別 共用體型別和列舉型別。陣列是同一資料型別的許多資料元素按某種順序排列在一起的集合,通過訪問陣列名和索引就可以訪問陣列中的任意元素。本節將重點學習一下內容 一維陣列是c語言中用來儲存和處理一維序列資料的資料型別。...