std :: lower_bound()实现

时间:2013-06-20 02:13:38

标签: c++ stl

我很好奇为什么std :: lower_bound()要求传递比较函数的值而不是引用?

按值传递意味着需要复制,减慢速度;特别是,如果有人传入“大”比较功能对象。

1 个答案:

答案 0 :(得分:4)

许多(如果不是大多数)比较对象都是无状态的并且几乎没有大小(尽管它们不能具有零大小)。传递引用实际上可能比通过值传递无状态谓词更昂贵(特别是如果编译器能够完全忽略副本)。