我正在尝试使用std::equal_range
下面的结构我有编译错误说error: no match for ‘operator<’
。
struct MyFoo {
int v_;
string n_;
bool operator<(int v) const
{ return v_ < v;}
};
vector<MyFoo> data;
// data is sorted by int v_
typedef vector<MyFoo>::iterator Ptr;
std::pair< Ptr, Ptr > pr = std::equal_range(data.begin(), data.end(), 10);
我已经查看了模板 implementationatino 并且失败的是以下*it
将指向 MyFoo 对象的迭代器延迟val_
为 10。
if(*it < val_) {
...
}
为什么它不工作?我想可能是因为它试图调用operator<
未定义的全局,但因为我将它定义为不应该成为问题的类成员,不是吗?