//---------------------------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 不成功...