阅读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)