标签: c++ stl
我很好奇为什么std :: lower_bound()要求传递比较函数的值而不是引用?
按值传递意味着需要复制,减慢速度;特别是,如果有人传入“大”比较功能对象。
答案 0 :(得分:4)
许多(如果不是大多数)比较对象都是无状态的并且几乎没有大小(尽管它们不能具有零大小)。传递引用实际上可能比通过值传递无状态谓词更昂贵(特别是如果编译器能够完全忽略副本)。