我试图找到对向量的upper_bound。
上界3
有vector<int>
是给我的输出4
如预期。
int a[] = {2,2,2,2};
vector<int> b(a,a+4);
cout<<(upper_bound(b.begin(), b.end(),3) - b.begin());cout<<endl; //output: 4 as expected
对于矢量的对vector<pair<int,int>>
上界make_pair(0,3)
是0
不是4
,我不明白怎么样?
vector<pair<int, int > > v1;
v1.push_back(make_pair(1,2));
v1.push_back(make_pair(1,2));
v1.push_back(make_pair(1,2));
v1.push_back(make_pair(1,2));
cout<<(upper_bound(v1.begin(),v1.end(),make_pair(0,3), sortBySec)-v1.begin())<<endl; // output 0 should be 4
我正在使用sortBySec
函数来考虑对的第二个值
bool sortBySec(pair<int, int> a1,pair<int, int> a2){
return a1.second - a2.second;
}
return a1.second - a2.second;
应该是return a1.second < a2.second;
。您应该提供严格的弱排序,即<
关系。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句