C++中两个独立map同key操作是否会互相影响?附代码示例
关于std::map的疑问解答
你代码中声明的m1和m2是两个完全独立的std::map对象,各自拥有独立的内存存储空间,键值对的读写操作完全隔离。就算两者存在相同的key,修改其中任意一个map的key对应值,都不会对另一个map的同key值产生任何影响,不存在你担心的同步自增情况。
你提交返回错误答案的问题和map的这个特性无关。
你提交的参考代码
#include<bits/stdc++.h> using namespace std; #define ll long long int #define rep(i,a,b) for(ll i=a;i<b;i++) void calculation(ll n,ll x) { ll i,arr[n],k,max=INT_MIN,j=0,min=INT_MAX; map<ll,ll> m1,m2; rep(i,0,n) { cin>>arr[i]; m1[arr[i]]++; } if(x==0) { rep(i,0,n) { if(m1[arr[i]]>max) max=m1[arr[i]]; } cout<<max<<" 0\n"; } else{ rep(i,0,n) { if(m1[arr[i]]+m2[arr[i]]>=max && m2[arr[i]]<min){ max=m1[arr[i]]+m2[arr[i]]; min=m2[arr[i]];} } cout<<max<<" "<<min<<"\n"; } } int main () { ll t,n,x; cin>>t; while(t--) { cin>>n>>x; calculation(n,x); } return 0; }
内容的提问来源于stack exchange,提问作者Kalash Jain
相关产品推荐
相关产品推荐

