gpt4 book ai didi

c++ - 为什么下限不适用于 vector 对

转载 作者:行者123 更新时间:2023-11-30 03:14:17 24 4
gpt4 key购买 nike

我试图找到 vector 对的上界。

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 对 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; .您需要提供严格的弱排序,即 <关系。

关于c++ - 为什么下限不适用于 vector 对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57943454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com