vector中的lower_bound()
其中如果不减去v.begin(),返回一个迭代器,然后如果its==v.end()那么就是没有符合的。获取第一个的下标就是its - v.begin().
#include <iostream>
#include <vector>
#include <queue>
#include<algorithm>
using namespace std;
int main(){
vector<int>v;
v.push_back(10);
v.push_back(20);
sort(v.begin(),v.end());
auto its =lower_bound(v.begin(),v.end(),10);
if(its!=v.end()){
cout<<(its - v.begin())<<endl;
}
else{
cout<<"空的"<<endl;
}
}
或者说可以之间这样
#include <iostream>
#include <vector>
#include <queue>
#include<algorithm>
using namespace std;
int main(){
vector<int>v;
v.push_back(10);
v.push_back(20);
sort(v.begin(),v.end());
auto its =lower_bound(v.begin(),v.end(),20)-v.begin();
if(its<v.size()){
cout<<its<<endl;
}
else{
cout<<"空的"<<endl;
}
}

浙公网安备 33010602011771号