社区讨论

问个问题

学术版参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mhjsjchr
此快照首次捕获于
2025/11/04 07:48
4 个月前
此快照最后确认于
2025/11/04 07:48
4 个月前
查看原帖
这里有两份代码:
node版:
CPP
#include<bits/stdc++.h>
using namespace std;

struct node{
	int t1,t2;
	bool operator <(const node &x)const{
		return x.t2<t2;//随便排的 
	}
}a[6];
map<node,int>mp;
int main(){
	a[1]=node{1,1},a[2]=node{2,3},a[3]=node{2,4},a[4]=node{2,3},a[5]=node{1,3};
	for(int i=1;i<=5;i++){
		if(!mp[a[i]]){
			cout<<i<<" ";
			mp[a[i]]=1;
		}
	}
}
pair版:
CPP
#include<bits/stdc++.h>
using namespace std;

pair<int,int>a[6];
map<pair<int,int>,int>mp;
int main(){
	a[1]=make_pair(1,1),a[2]=make_pair(2,3),a[3]=make_pair(2,4);
	a[4]=make_pair(2,3),a[5]=make_pair(1,3);
	for(int i=1;i<=5;i++){
		if(!mp[a[i]]){
			cout<<i<<" ";
			mp[a[i]]=1;
		}
	}
}
可以看到两份代码只有map的类型不同,一个是node, 一个是pair,但输出不同。
node输出1 2 3,而pair输出1 2 3 5。是怎么回事?
解疑必关。

回复

4 条回复,欢迎继续交流。

正在加载回复...