traits是人為製造的特性萃取機制,是加的中間層。
class(template)iterators
都有能力定義自己的associated types。
non
class(template)iterators,即native pointer
,無法定義自己的associated types,但其實很直觀。
iterators
必須有能力回答algorithms
的提問,但是native pointer
(被視為一種退化的iterator)並不能回答,因此由traits來回答。
list c;..
.list
::iterator ite;
ite =
::find
(c.begin()
, c.
end(
), target)
;
可以寫為
list c;..
.auto ite =
::find
(c.begin()
, c.
end(
), target)
;
將衝突的元素放在同一位置的煉表裡,但是鍊錶也不能太長。
stack和queue從技術上被稱為容器介面卡(container adapter)
allocator呼叫的是operator new(),而operator new()呼叫的又是malloc,因此分配記憶體最終呼叫的是malloc。呼叫malloc會出現overhead的情況,即實際資料佔的記憶體空間比例小。
在vc6中,allocator只是以::operator new和::operator delete完成allocator()和deallocator()沒有任何特殊設計。
空間配置函式allocate()首先判斷區塊大小,如果大於128 bytes就呼叫第一季配置器,如果小於128 bytes就檢查對應的free list。(按照8的倍數進行調整。)
見ipad的原始碼截圖
stack和queue(被稱為介面卡)都是預設以deque作為底層結構。
stack可以以vector作為底層結構,但是queue不行,因為無法執行pop操作。
stack和queue都不能選擇set或map作為底層結構,因為無法轉呼叫一些函式,如push back, pop back, back
橋接模式(handle/body)???
在handle裡有乙個東西表現「實現手法」,這個實現手法在body具象化。
傳回指定key值所對應的data
如果該指定的key值不存在,就建立乙個
lower_bound是二分搜尋法(binary search)的一種。
如果找到了指定值(可能有多個重複),返回第乙個指定值的位置。
如果找不到指定值,lower_bound會傳回最適合放指定值的位置。
當元素個數大於hashtable籃子(buckes)的數量時,就要rehashing,擴充成接近2倍的容量(質數)
每乙個hashtable的本身位元組數是19,又因為(對齊)的原因,調整為4的倍數,所以是20個位元組。
從語言層面講,除了algorithms是function template,其餘的全都是class template。
演算法algorithms對容器containers一無所知,所以他所需要的一切資訊都從迭代器iterators取得。也就是說迭代器iterators(由containers提供)必須能夠回答algorithms的所有提問,才能搭配該algorithms的所有操作。
stl規定每個adaptable functions都應該挑選適當者繼承之,因為function adapter將會向其提問。
binder2nd
not1
bind
資料量大時採用quick sort,分段遞迴排序,一旦分段後的資料量小於某個門檻,為避免quick sort的遞迴呼叫帶來過大的額外負擔(overhead),就改用insertion sort。如果遞迴層次過深,還會改用heap sort。
insertion sort以雙層迴圈的形式進行,外迴圈遍歷整個序列,每次迭代決定出乙個子空間:內迴圈遍歷子區間,將子區間內的每乙個「逆轉對」倒轉過來。所謂「逆轉對」是指任意兩個迭代器i,j,有*i > *j。
quick sort是目前已知最快的排序法,平均複雜度o(n log n),最壞的情況下將達o(n^2).
取s中的任何乙個元素,當作樞軸(pivot)v。
將s分割為l,r兩段,使l內的每乙個元素都小於或等於v,r內的每乙個元素都大於或等於v
對l,r遞迴執行quick sort。
學習JPetStore 未完待續
拿過這個專案,首先進行了部署 1.部署 新建乙個web工程,對照進行複製 把devlib和lib下面的包賦值到了自己web工程的web inf lib 中,然後到eclipse中將所有lib目錄下的包都匯入工程的libaries.2.執行 這樣的配置,在catalog main.jsp找到主頁。3....
STL好用函式集錦(未完待續)
next permutation a 1,a n 1 用於求解a陣列的下乙個較大的排列。prev permutation則與之相反,求解下乙個較小的排列。函式引數均為陣列起始座標,和終止座標,如果存在下乙個排列,則返回1,否則返回0,同時把該陣列變為下乙個排列。應用前景廣泛。例項 include i...
Shell學習筆記 未完待續
一 cat的用法總結 cat是乙個簡單而通用的命令,用來顯示內容,建立檔案,還可以用來顯示控制字元 但是在使用cat是請注意,它不會在檔案分頁符處停下來,它會一下顯示完整個檔案。如果希望每次顯示一頁,可以使用more或者cat命令的輸出通過管道傳遞到另外乙個具有分頁功能的命令中 cat myfile...