分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
bimap是boost中很重要的乙個容器,可以進行雙向的查詢和替換,這樣彌補了如果map和multimap需要找到data所對應的鍵值。迴圈遍歷元素,才能找到相應的鍵值,再刪除,最後替換的不足。
但是boost的模板源程式設計又有著先天的缺點,就是編譯錯誤不容易找到,編譯時間有點長。但是如果長期使用boost,知道常見的錯誤,這個缺點還是可以慢慢克服的;雖然編譯時間是有點長,但是比起自己一行一行自己寫,還是說的過去的。
下面是需要的一些頭,如果只是簡單使用bimap,僅引入#include 就可以了
#include #include #include #include #include #include #include //#include usingnamespace boost::bimaps;usingnamespace boost;usingnamespace std;
首先寫出乙個列印bimap的工具函式,這個函式不僅可以列印bimap也可以列印map和multimap。
這裡用到了boost很常用的boost_auto和boost_foreach。個人比較傾向於我寫的第乙個實現。
如果在程式靈活的使用boost的一些巨集是可以很多的**的。
這裡boost_foreach要比boost_auto要簡明一些。但是試想如果不能用這兩個的話,for迴圈的第乙個引數應該寫多長啊。
//列印所有元素templatevoidprint_map(t &m) //方式二// for (boost_auto(pos,m.begin());pos!=m.end();++pos)// }
切記 簡單bimap key/value 從兩個個方向看必須都是唯一,雖然這個規則可以在後面改變
typedefbimap bm_t;
如果插入的值不唯一,將會顯示第一次插入的結果。
下面是左值重複插入測試
intmain().insert(make_pair(1,"hello")); bm_tag_test.by{}.insert(make_pair(2,"world")); bm_tag_test.by{}.insert(make_pair("test",3)); print_map(bm_tag_test.by()); }
關於bimap的投射和替換,查詢,修改功能,下次再給出詳細說明。
給我老師的人工智慧教程打call!
boost bimap 學習筆記
bimap是boost中很重要的乙個容器,可以進行雙向的查詢和替換,這樣彌補了如果map和multimap需要找到data所對應的鍵值。迴圈遍歷元素,才能找到相應的鍵值,再刪除,最後替換的不足。但是boost的模板源程式設計又有著先天的缺點,就是編譯錯誤不容易找到,編譯時間有點長。但是如果長期使用b...
boost bimap使用詳解
1 特點 1 雙向對映容器,類似於map 單向對映容器 而又不同於map 2 bimap既可以通過key來進行搜尋,有可以通過value來進行搜尋 3 乙個bimap相當於內部包含left和right兩個map型別的容器 4 對於乙個bimap,其左檢視bimap.left相當於map,右檢視bim...
學習筆記 雜湊學習筆記
hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...