0
我想從已排序的對向量中找出比給定的第一個數字大012db。我用upper_bound
,它運作良好。代碼如下所示:upper_bound函數從一個特定的位置,而不是data.begin()
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>&))'
是什麼原因造成這樣的錯誤?有沒有更好的方法從一個給定的位置搜索?