田微深 2024-03-20 18:24 采纳率: 62.5%
浏览 3
已结题

C++代码 语法问题 以及auto用法


#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n, i, m, j, sum, cnt, k;
    cin>>n;
    int a;

    for(i=0;i<n;i++){
        cin>>m;
        cnt=0;
        map<int,int>mp;
        for(j=0,sum=0;j<m;j++){
            cin>>a;
            sum+=a;
            mp.insert(pair<int ,int>(a,0));
            mp[a]++;
        }
        if((2*sum)%m!=0)cout<<0<<endl;
        else {
            k=sum*2/m;
            for(auto[x,y]:mp){
                int z=k-x;
            if(mp.count(z)){
                if(k-x==x){
                    cnt+=(y-1)*y;
                }
                else cnt+=y*mp[z];
            }}
            cout<<cnt/2<<endl;
        }
    }
    return 0;
}


以上是代码,不确定有没有语法错误
主要是问auto[x,y]:mp这是啥?
只知道这个auto[x]:mp
还有一个问题
mp.insert(pair<int ,int>(a,0));
这个要不要?

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-20 18:24
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    针对第一个问题,auto[x,y]:mp是一个用于遍历map容器的语法,x表示map中的key,y表示对应的value。这里的auto是关键字,用于让编译器自动推导变量类型。例如:
    map<int, string> m;
    m.insert(pair<int, string>(1, "one"));
    m.insert(pair<int, string>(2, "two"));
    for (auto[x, y] : m) {
        cout << "Key: " << x << " Value: " << y << endl;
    }
    

    输出结果为:

    Key: 1 Value: one
    Key: 2 Value: two
    

    针对第二个问题,mp.insert(pair<int, int>(a, 0))是向map容器mp中插入一个键值对(a,0),表示a这个数出现的次数。实际上,这句代码可以简化为mp[a]++,因为如果a这个key在map中已经存在,mp[a]会自增1;如果不存在,则会自动插入一个键值对(a,0)并将0自增1。因此,这句代码可以写成:

    map<int, int> mp;
    for (j = 0, sum = 0; j < m; j++) {
        cin >> a;
        sum += a;
        mp[a]++;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 创建了问题 3月20日

悬赏问题

  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,
  • ¥15 spaceclaim模型变灰色
  • ¥15 求一份华为esight平台V300R009C00SPC200这个型号的api接口文档
  • ¥15 字符串比较代码的漏洞
  • ¥15 欧拉系统opt目录空间使用100%
  • ¥15 ul做导航栏格式不对怎么改?