我有一个包含三个字段的结构数组:
struct data{
int s;
int f;
int w;
};
struct data a[n];
为了根据字段 f 对结构数组进行排序,我使用了自己的比较运算符:
bool myf( struct data d1,const struct data d2){
return d1.f < d2.f ;
}
上述运算符在内置sort()
函数中工作正常:
sort(a,a+n,myf);
但它不适用于upper_bound()
功能:
upper_bound(a,a+n,someValue,myf);
谁能告诉我我在哪里做错了?我的比较运算符错了吗?如果它是错误的,它为什么工作sort() function and not upper_bound()
?
我正在关注编译:
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/stl_algo.h: In function ‘_FIter std::upper_bound(_FIter, _FIter, const _Tp&, _Compare) [with _FIter = data*, _Tp = int, _Compare = bool (*)(data, data)]’:
prog.cpp:37: instantiated from here
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/stl_algo.h:2243: error: conversion from ‘const int’ to non-scalar type ‘data’ requested