合并表记录C++

合并表记录

http://www.nowcoder.com/questionTerminal/de044e89123f4a7482bd2b214a685201

用map秒杀

#include<iostream>
#include<map>
using namespace std;
int main()
{
    int n;
    map<int,int> m;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        pair<int,int> tmp;
        cin>>tmp.first;
        cin>>tmp.second;
        if((m.find(tmp.first))!=m.end())
            m[tmp.first]+=tmp.second;
        else
            m[tmp.first]=tmp.second;
    }
    for(auto it=m.begin();it!=m.end();it++)
        cout<<it->first<<" "<<it->second<<endl;
    return 0;
}
全部评论
不用判断是tmp.first是否存在。 当使用m[i] 时,如果map中不存在这个key,map会自动帮你创建一个键值对。 所以在不确定值是否存在且不希望将该值插入时才使用.find()方法。 这里每个值都要插入,直接+=就可以了。
1 回复 分享
发布于 2021-09-04 15:38
map不是有序的,这样输出会不会有问题?
点赞 回复 分享
发布于 2022-05-28 14:50
和我的思路差不多,感觉自己写得有些繁琐了。
点赞 回复 分享
发布于 2022-05-26 18:11
cin >> tmp.second 时,会不会出问题,相当于tmp[Index] = Value; 了,也就是这一步已经插入值了,但是后面的+= 好像正常执行的
点赞 回复 分享
发布于 2021-03-06 11:08

相关推荐

今天 13:16
湖南工学院 Java
点赞 评论 收藏
分享
不亏是提前批,神仙打架,鼠鼠不配了
站队站对牛:现在92都报工艺岗了
投递韶音科技等公司7个岗位
点赞 评论 收藏
分享
06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
评论
52
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务