stl原始碼剖析 詳細學習筆記deque(2)

2022-07-17 00:27:19 字數 1686 閱讀 3739

//---------------------------15/3/13----------------------------

self&operator++()

return *this;

}self

operator

++(int

)   //這裡不能返回引用,因為

tmp是臨時變數,作用域結束tmp就消失了

self&operator--()

--cur;

return *this;

}selfoperator--(int)

/*1.看能否在不改變node的情況下進行指標位置的移動

2.調整node

offset==(n+x) -->> 最後的位置==first + (n + x)

x代表cur 距離first的距離,也就是cur當前的下標

(offset>0): offset/diffenrence_type(buffer_size())

-->>    y==(n + x)/(sz) -->>移動的node節點個數為y

(offset<0)   -difference_type((-offset -1) / buffer_size()) - 1

-->>    y==-(-n - x -1)/(sz) -1 -->> y==(n + x +1)/(sz) -1

不同於(offset<0)的情況,因為當前處於first位置,移動的距離在

-1到-(sz)是都應該移動乙個node節點所以才取上式子;

3.調整cur

(offset>0) :offset==(n + x)

node_offset*difference_type(buffer_size())==(n + x -r)

(r代表餘數)

-->>z(位移量)==r

(offset<0)  :offset==(n + x)

node_offset*difference_type(buffer_size())==(n + x +r-sz)

-->>z(位移量)==-sz + r

cur =z

*/self&operator+=(difference_type n)

return *this;

}selfoperator+(difference_type n)

const

self &operator -=(difference_type n)

selfoperator-(difference_type n)

const

referenceoperator(difference_type)const

bool

operator==(const  self& x)const

bool

operator!=(const self& x)const

bool

operator

<(const self& x)const

template

class deque

iteratoer end()

referenceoperator(size_type n)

reference front()

reference back()

size_type size()const //兩個;

是手誤??

}

stl原始碼剖析 詳細學習筆記 仿函式

15 04 01 仿函式是為了演算法而誕生的,可以作為演算法的乙個引數,來自定義各種操作,比如比大小,返回bool值,對元素進行操作等 雖然這些函式也能實現,但是如果配合配接器 adapter 可以產生更靈活的變化。為了使物件像函式一樣,就必須過載operator unary function te...

《STL原始碼剖析學習筆記》

1 演算法泛化過程 首先是模板 適應不同型別 其次是迭代器 具有原生指標行為的類 最後是仿函式 行為類似函式指標,但更適合泛化 泛化的優點 個人總結 1 簡化程式,提高 的可重用性 2 提高了程式的通用性 3 提高了程式的可讀性 4 提高了安全性 函式指標及仿函式 首先說說函式指標,乙個程式可能需要...

《STL原始碼剖析》學習筆記

第二章 空間配置器 allocator 考慮到小型區塊可能造成的記憶體破碎問題,sgi設計了雙層級配置器。當配置區塊超過128bytes時,便呼叫第一級配置器,即直接使用malloc free sgi的第一級配置器的allocate 和realloc 都是在呼叫malloc 和realloc 不成功...