為包含指標的關聯容器指定比較型別

2021-08-01 09:40:15 字數 1131 閱讀 1567

effective stl讀書筆記

今天看了一條,寫下來當做筆記,其實挺好理解的,也挺簡單的

我們知道,當我們建立乙個關聯容器時,比如set或者map,它會要求 我們指定乙個比較函式子類。如果我們不指定就會採用預設的比較函式子類,當然在某些情況下會產生錯誤。

比如下面的**

輸出的結果並不是我們想要的按字母順序輸出,因為採用的是set的預設比較函式子類less插入時其實是按指標所存的位址的大小來比較的。

所以如果 我們想要採用上述字串按照字母順序輸出,就必須重新定義子類的比較函式子類

int main()

輸出結果如下:

我們為什麼要寫乙個函式子類,而不是只用乙個函式呢?這是因為set建立型別時只接收的是乙個型別,所以我們必須宣告成乙個類。

在這我們可以寫乙個通用的模板函式

struct strcmp

};

直接這麼使用,只要是指標類就可以使用

typedef setstringsett;

關於這個還有個問題沒有解決,有時間再說吧,我要下班啦,哈哈哈。

為包含指標的關聯容器指定比較型別

我寫下這樣的 set ssp ssp.insert new string ant ssp.insert new string wom ssp.insert new string lem ssp.insert new string pen for set const iterator i ssp.be...

條目二十《為包含指標的關聯容器指定比較型別》

stl中的關聯容器是一種動態資料結構,其資料儲存方式是以記憶體節點方式的資料結構,具體來說一般是一種平衡二叉樹 紅黑樹 在向關聯容器插入元素的時候,容器內部為了保持樹的平衡性,會自動 插入函式有自我調整 的調整當前插入元素的儲存位置,達到動態平衡的目的。所以在關聯容器儲存的是指標的時候,如果是採用預...

為指標的關聯容器指定比較型別

假定有乙個string 指標的set,你把一些動物的名字插入set setssp ssp.insert new string anteater ssp.insert new string wombat ssp.insert new string lemur ssp.insert new string...