【发布时间】:2014-07-02 18:25:48
【问题描述】:
我试图从排序对向量中找出大于给定Number 的第一个数字。我使用了upper_bound,效果很好。代码如下:
bool cmp(int n, pair<int, int> const& p)
{
return (p.first > n) ;
}
vector<pair<int,int>> v;
vector<pair<int,int>>::iterator up;
//int Number = ...;
// .......
up = upper_bound(v.begin(), v.end(), Number, cmp);
现在我想从特定位置而不是开头进行搜索。于是我把代码改成了:
up = upper_bound(v.at(i), v.end(), Number, cmp);
其中i表示我要从向量v的ith位置搜索到结束。但是,它给了我一个错误:
error: no matching function for call to 'upper_bound(__gnu_cxx::__alloc_traits<std::
allocator<std::pair<int, int> > >::
value_type&, std::vector<std::pair<int, int> >::iterator, int&,
bool (&)(int, const std::pair<int, int>&))'
造成这种错误的原因是什么?有没有更好的方法从给定位置进行搜索?
【问题讨论】: