巧妙的設計stl中的比較函數,以避免不必要的cpu開銷
在stl algorithm.h中,常利用一些排序操作,比如通過vector實現一個堆。 如果堆的每個元素是自定義結構,也就是,自己實現的類作為堆的基本元素, 那麼make_heap和push_heap,pop_heap就需要開發者提供自己的比較函數。 bool __cmp(value &v1 ,value & v2). 在stl的內部實現中,當這個_cmp判定為true時,就需要調整heap,所以如果 v1 == v2 返回 true。那麼恭喜你,掉進了坑裏。如果返回false,則能夠節省不小的開銷,尤其當你的堆用在一個循環內的時候。 ps.在stl中類似heap的結構,最好使用指針作為基本元素,否則數據調整的時候, 拷貝的量是很大的。
最後更新:2017-04-03 16:48:57