指针模板

下文所提到的函数的用法:

birnary_search: 查找某个元素是否出现,return值为bool binary_search(beg,end,val)查找val,找到为1,否则为0;
lower_bound:查找第一个>=某个元素的位置 lower_bound(beg,end,val)返回一个迭代器,指向非递减序列中第一个>=val的位置
upper_bound:查找第一个>某个元素的位置 upper_bound(beg,end,val)同上

寻找某个数是否出现

#include <bits/stdc++.h>
using namespace std;
int n;
int main(){
	int *p;
	cin>>n;
	int a[n];
	for(int i = 1;i<=n;i++) cin>>a[i];
	p = &a[1];
	if(binary_search(p,p+sizeof(a),1) == 1) cout<<"Yes";这里的1为这个数字
	else cout<<"No";
	return 0;
}

寻找某个数第一次出现的位置(下标)

#include <bits/stdc++.h>
using namespace std;
int n;
int main(){
	int *p;
	cin>>n;
	int a[n];
	for(int i = 1;i<=n;i++) cin>>a[i];
	p = &a[1];
	cout<<lower_bound(p,p+sizeof(a),3) - p + 1;这里的3为这个数字
	return 0;
}

寻找某个数最后一次出现的位置(下标)

#include <bits/stdc++.h>
using namespace std;
int n;
int main(){
	int *p;
	cin>>n;
	int a[n];
	for(int i = 1;i<=n;i++) cin>>a[i];
	p = &a[1];
	cout<<upper_bound(p,p+sizeof(a),5) - p;//这里的5为这个数字
	return 0;
}
posted @ 2023-07-03 16:31  nasia  阅读(12)  评论(0)    收藏  举报