我有一对排序的矢量。为了找到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,我的程序会成功构建。 这可能是什么原因?
答案 0 :(得分:3)
upper_bound
使用其他顺序的参数调用比较器(首先是搜索值,然后是搜索范围内的元素)。
所以你的比较器不起作用,因为它需要一对作为它的第一个参数而int
作为它的第二个参数。