您将什么功能传递给了排序算法?您应该能够对upper_bound和lower_bound使用相同的参数。
进行比较的最简单方法是创建一个虚拟对象,并将关键字段设置为您的搜索值。这样,比较将始终在相似对象之间进行。
编辑: 如果由于某种原因无法获得具有正确比较值的虚拟对象,则可以创建比较函子。函子可以为operator()提供三个重载:
struct MyClassLessThan{ bool operator() (const MyClass & left, const MyClass & right) { return left.key < right.key; } bool operator() (const MyClass & left, float right) { return left.key < right; } bool operator() (float left, const MyClass & right) { return left < right.key; }};如您所见,这是很长的路要走。



