求助,编译错误!谢谢
  • 板块灌水区
  • 楼主yangyuanxi44
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/7/11 17:25
  • 上次更新2023/11/4 15:04:57
查看原帖
求助,编译错误!谢谢
450893
yangyuanxi44楼主2021/7/11 17:25

谢谢大家,帮忙看下

#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;
} 

谢谢大家了

2021/7/11 17:25
加载中...