STL原始碼解析 STL 與 泛型程式設計

2021-10-09 02:52:56 字數 808 閱讀 9410

物件導向程式設計與泛型程式設計

template<

typename t>

class

vector

int ar[6]

=;vector<

int, allocator<

int>>

vec(ar, ar+6)

;cout <<

count_if

(vec.

begin()

, vec.

end(),

notl

(bind2nd

(less<

int>()

,6))

);

以上**中,vector為容器,allocator為介面卡,在這裡為vector分配儲存 int 的 記憶體空間,一般不需要使用者填寫。begin()end()為 迭代器,count_if為 演算法介面(計數);less()為 仿函式,傳入值小於其引數時返回 true;bind2ndnotl都是 仿函式介面卡,bind2nd意思是將 第二個引數繫結到第乙個引數(仿函式),在這裡就將 6 繫結到less()上,notl是置反。以上組合起來就是,從vec.begin() 到 vec.end(),遍歷 容器 vec, 如果元素 不小於 6, 則計數加1,最後返回計數的數值。

STL原始碼解析 sort heap

模板函式sort heap具有如下兩個版本 templatevoid sort heap ranit first,ranit last templatevoid sort heap ranit first,ranit last,pr pred 其功能是完成區間 first,last 內元素的堆排序,...

STL原始碼解析之heap

include include include heap algorithms using namespace std heap的所有元素都必須遵循特別的完全二叉樹排列規則,所有heap不提供遍歷功能,也不提供迭代器 int main vectorivec ia,ia 9 for int i 0 i...

STL 原始碼閱讀

1 這裡可以看出來,容器將迭代器作為類成員。vectora iteratorite a.begin 容器的成員函式可以返回迭代器,所以迭代器是容器的成員物件。2 個人理解,迭代器是對指標的封裝和提公升,盡可能遮蔽資料結構的底層細節,對外提供統一的操作介面,這些介面跟普通指標的功能類似,比如自增或自減...