學習篇 STL侯捷課程 (未完待續)

2021-10-19 11:23:27 字數 2424 閱讀 5099

traits是人為製造的特性萃取機制,是加的中間層。

class(template)iterators都有能力定義自己的associated types。

nonclass(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...