閱讀655 返回首頁    go 阿裏雲 go 技術社區[雲棲]


巧妙的設計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

  上一篇:go 沒有人願意把羨慕輕易告訴你
  下一篇:go armlinux下的網路傳輸(tcp/ip)