深入理解 STL

2021-07-10 13:05:18 字數 697 閱讀 3041

由於 rb-tree(紅黑樹)是一種平衡二叉搜尋樹,具有較好的自動排序的效果。關聯式容器(set/multiset、map/multimap)都需根據元素的鍵值(key)對所有元素自動排序,所以標準的 stl set/map 都是以紅黑樹為底層機制 。set 的原始碼如下:

template

class compare = less,

class alloc = alloc>

class

set;

我們來看其內部對 find 成員函式的實現:

iterator find(const key_type& x) const 

面對關聯式容器,應使用其所提供的 find 成員函式來搜尋元素(其實現是呼叫底層的紅黑樹的 find 成員,如上所示),會比使用 stl 演算法 find() 更有效率,因為 stl 演算法 find 只是循序搜尋(未利用 set 的自動排序特性)。

資料是精髓和靈魂。

私有成員變數之於乙個類,正如容器之於 stl;

在 c++ 11 之前,關聯式容器的 erase() 函式不返回任何內容(返回型別為 void),這是為了效率。在乙個關聯式容器內查詢元素並返回其後繼者,可能會花不少時間,因為容器被實現為一棵 binary tree。

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

mysql 索引深入理解 深入理解MySql的索引

為什麼索引能提高查詢速度 先從 mysql的基本儲存結構說起 mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶每個資料頁中的記錄又可以組成乙個單向鍊錶 每個資料頁都會為儲存在它裡邊兒的記錄生成乙個頁目錄,在通過主鍵查詢某條記錄的時候可以在頁目錄中使用二分法快速定位到對應...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...