指针模板
下文所提到的函数的用法:
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;
}

浙公网安备 33010602011771号