STL sort原始碼剖析

2021-07-08 18:50:52 字數 2436 閱讀 2344

//sort函式原始碼:

template inline void sort(_randomaccessiter __first, _randomaccessiter __last) 

}

//__lg函式原始碼:

//找出2^k<=n的最大值k;

template inline _size __lg(_size __n)

//__introsort_loop函式原始碼:

const int __stl_threshold = 16; //全域性變數;

template //_tp為待排序元素型別, __depth_limit為最多允許分割的層數;

void __introsort_loop(_randomaccessiter __first,

_randomaccessiter __last, _tp*,

_size __depth_limit)

--__depth_limit;//分割層數減1;

//__median函式用於選擇乙個樞軸,然後進行一次分割操作,其中cut為"右半段"的第乙個元素;

_randomaccessiter __cut =

__unguarded_partition(__first, __last,

_tp(__median(*__first,

*(__first + (__last - __first)/2),

*(__last - 1))));

__introsort_loop(__cut, __last, (_tp*) 0, __depth_limit);//對"右半段"進行__introsort排序;

__last = __cut;//繼續while迴圈,對由[first,last)表示的"左半段"進行introsort;

}}

//__unguarded_paririon函式原始碼:

template _randomaccessiter __unguarded_partition(_randomaccessiter __first, 

_randomaccessiter __last,

_tp __pivot) //分割函式;

}

//partial_sort函式原始碼:

template inline void partial_sort(_randomaccessiter __first,

_randomaccessiter __middle,

_randomaccessiter __last)

template void __partial_sort(_randomaccessiter __first, _randomaccessiter __middle,

_randomaccessiter __last, _tp*)

// __final_insertion_sort函式原始碼:

//進行插入排序;

void __final_insertion_sort(_randomaccessiter __first,

_randomaccessiter __last)

else

__insertion_sort(__first, __last);

}

//__insertion_sort函式原始碼:

template void __insertion_sort(_randomaccessiter __first, _randomaccessiter __last) 

template inline void __linear_insert(_randomaccessiter __first,

_randomaccessiter __last, _tp*)

else

__unguarded_linear_insert(__last, __val);

}template void __unguarded_linear_insert(_randomaccessiter __last, _tp __val)

*__last = __val;

}

//__unguarded_insertion_sort函式原始碼:

template inline void __unguarded_insertion_sort(_randomaccessiter __first, 

_randomaccessiter __last)

template void __unguarded_insertion_sort_aux(_randomaccessiter __first,

_randomaccessiter __last, _tp*)

//參考文獻《stl原始碼剖析》

原始碼剖析 Hashtable 原始碼剖析

hashtable同樣是基於雜湊表實現的,同樣每個元素都是key value對,其內部也是通過單鏈表解決衝突問題,容量不足 超過了閾值 時,同樣會自動增長。hashtable也是jdk1.0引入的類,是執行緒安全的,能用於多執行緒環境中。hashtable同樣實現了serializable介面,它支...

python原始碼剖析 Python原始碼剖析

第頁共 頁python 原始碼剖析 物件機制 1.物件 在python 的世界中,一切都是物件,乙個整數是乙個物件,乙個字串也是 乙個物件,更為奇妙的是,型別也是乙個物件,整數型別是乙個物件,字串類 型也是乙個物件。從 年guido 在那個聖誕節揭開 python 世界的大幕開始,一直到現在,pyt...

Erlang hotwheels原始碼剖析

整體構架 janus transport sup 實質為transport,supervisor,client instance supervisor 每個tcp會話建立乙個transport程序來處理對應客戶端的請求。janus topman sup 實質為topman,worker,topic ...