谢谢大家,帮忙看下
#include<bits/stdc++.h>
using namespace std;
int n,m;
int ans[100005];
struct kj{
int bh,sh;
}c[100005];
struct tb{
int bh2,sh2;
}d[100005];
bool cmp1(kj x,kj y){
return x.bh<y.bh;
}
bool cmp2(tb x,tb y){
return x.bh2<y.bh2;
}
int ef1(int x){
int l=1,r=100001;
while(l<=r){
int mid=(l+r)/2;
if(d[mid]==x){//这里错了!!这里错了!!这里错了!!
return 1;
}
if(d[mid]>x){
r=mid;
}
if(d[mid]<x){
l=mid;
}
}
报错信息:
[Error] no match for 'operator==' (operand types are 'tb' and 'int')
全部代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int ans[100005];
struct kj{
int bh,sh;
}c[100005];
struct tb{
int bh2,sh2;
}d[100005];
bool cmp1(kj x,kj y){
return x.bh<y.bh;
}
bool cmp2(tb x,tb y){
return x.bh2<y.bh2;
}
int ef1(int x){
int l=1,r=100001;
while(l<=r){
int mid=(l+r)/2;
if(d[mid]==x){
return 1;
}
if(d[mid]>x){
r=mid;
}
if(d[mid]<x){
l=mid;
}
}
return -1;
}
int ef2(int x){
int l=1,r=100001;
while(l<=r){
int mid=(l+r)/2;
if(c[mid]==x){
return 1;
}
if(c[mid]>x){
r=mid;
}
if(c[mid]<x){
l=mid;
}
}
return -1;
}
int main(){
memset(pd,-1,sizeof(pd));
cin>>n>>m;
int t1=1,t2=1;
for(int i=1 ; i>=n ; i++){
cin>>c[i].bh;
c[i].sh=t1;
t1++;
}
for(int i=1 ; i<=m ; i++){
cin>>d[i].bh2;
d[i].sh2=t2;
t2++;
}
sort(c+1,c+n+1,cmp1);
sort(d+1,d+m+1,cmp2);
int maxn=max(n,m);
if(maxn==n){
for(int i=1 ; i<=n ; i++){
int z=ef1(c[i].bh);
if(z==1){
ans[c[i].sh]=c[i].bh;
}
}
}else{
for(int i=1 ; i<=m ; i++){
int z=ef2(d[i].bh2);
if(z==1){
ans[d[i].sh2]=d[i].bh2;
}
}
}
for(int i=1 ; i<=maxn ; i++){
cout<<ans[i]<<" ";
}
return 0;
}
谢谢大家了