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; 
	} 
}
posted @ 2024-05-20 22:44  lipu123  阅读(434)  评论(0)    收藏  举报