对<int,int>的向量上的lower_bound工作,upper_bound不是</int,int>

时间:2015-01-28 11:53:16

标签: c++ stl

我有一对排序的矢量。为了找到lower_bound和upper_bound,我使用了:

bool cmp2(const pair<int,int> &p1, const int v)
{
    if(p1.first<v)
        return true;
    else
        return false;
}
auto it1 = lower_bound(V.begin(), V.end(), h, cmp2);
auto it2 = upper_bound(V.begin(), V.end(), h, cmp2);

这里h是整数。引起我兴趣的是,只有在upper_bound中存在问题。如果我注释掉upper_bound,我的程序会成功构建。 这可能是什么原因?

1 个答案:

答案 0 :(得分:3)

upper_bound使用其他顺序的参数调用比较器(首先是搜索值,然后是搜索范围内的元素)。

所以你的比较器不起作用,因为它需要一对作为它的第一个参数而int作为它的第二个参数。