为什么下限不适用于向量对

Why lower bound is not working with pairs of vector

本文关键字:向量 适用于 不适用 为什么      更新时间:2023-10-16

我正在尝试为向量对找到upper_bound。

vector<int>3的上限是按预期为我提供输出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;。您应该提供严格的弱排序,即<关系。