关于重载运算符和bitset
  • 板块灌水区
  • 楼主蒟酱厂妹
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/3/29 14:37
  • 上次更新2023/10/28 05:15:33
查看原帖
关于重载运算符和bitset
310818
蒟酱厂妹楼主2022/3/29 14:37
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<bitset>
using std::cin;using std::cout;
std::bitset<2007>a[2007];
std::istream &operator>>(std::istream &in,std::bitset<2007ull>::reference &t){char c;in>>c;t=c=='1';return in;}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	std::ios::sync_with_stdio(false);
	cin.tie(nullptr);cout.tie(nullptr);
	int n,m,ans=0;cin>>n>>m;n++;
	for(int i=1;i<=m;i++)for(int j=1;j<=n;j++)cin>>a[i][j];
	for(int i=1,r=1;i<n;r=++i){
		while(r<=m&&!a[r][i])r++;
		ans=std::max(ans,r);
		if(r==m+1)return cout<<"Cannot Determine",0;
		if(r!=i)std::swap(a[i],a[r]);
		for(int j=1;j<=m;j++)if(i!=j&&a[j][i])a[j]^=a[i];
	}
	cout<<ans;
	for(int i=1;i<n;i++)cout<<(a[i][n]?"y7M#\n":"Earth");
	return 0;
}

这段代码会 CE
但是cin的类型是 std::istream 并且 std::bitset 重载了 [] 运算符所以在我这里返回类型是 std::bitset<2007ull>::reference 所以我重载运算符试图让 cin能够输入这个类型却 CE 了这该怎么办

2022/3/29 14:37
加载中...