C++容器map的key相同,如何合并对应的values
例如若干学生有学号,成绩,课程三个属性学号N成绩T课程L1090语文1191语文1290数学1092数学.........剩下的学生课程就不多例举了现在整个mapmap<...
例如若干学生有学号,成绩,课程三个属性
学号N 成绩T 课程L
10 90 语文
11 91 语文
12 90 数学
10 92 数学
... ... ...
剩下的学生课程就不多例举了
现在整个map
map<int16,int64> map1;
map1.insert(map<int16,int64>::value_type(10,90));
map1.insert(map<int16,int64>::value_type(11,91));
map1.insert(map<int16,int64>::value_type(12,90));
map1.insert(map<int16,int64>::value_type(10,92));
...
然后我想讲两个学号为10的成绩合并成182,变成
map<int16,int64>::value_type(10,182);
...就像为某个班级的学生计算总分一样,输入学生的学号和每课成绩,自动计算出每个学生的总分,形成新的数据。
该怎么做?? 展开
学号N 成绩T 课程L
10 90 语文
11 91 语文
12 90 数学
10 92 数学
... ... ...
剩下的学生课程就不多例举了
现在整个map
map<int16,int64> map1;
map1.insert(map<int16,int64>::value_type(10,90));
map1.insert(map<int16,int64>::value_type(11,91));
map1.insert(map<int16,int64>::value_type(12,90));
map1.insert(map<int16,int64>::value_type(10,92));
...
然后我想讲两个学号为10的成绩合并成182,变成
map<int16,int64>::value_type(10,182);
...就像为某个班级的学生计算总分一样,输入学生的学号和每课成绩,自动计算出每个学生的总分,形成新的数据。
该怎么做?? 展开
2个回答
展开全部
1、如果重复添加的话,hashmap会自动覆盖key一样的数据,保证一个key对应一个value
也就是说,只要把一个map2里的数据按照key一个一个都加到map1里去就行了,但是这样会破坏map1如果是想保持原来的不变,可以先新建一个空的hashmap,把map1和map2的数据都加进去就可以了
2、例如:
HashMap map3 = new HashMap();
for (Object key : map1.keySet())
map3.put(key, map1.get(key));
for (Object key : map2.keySet())
map3.put(key, map2.get(key));
//可以根据具体的类型加上泛型模板
也就是说,只要把一个map2里的数据按照key一个一个都加到map1里去就行了,但是这样会破坏map1如果是想保持原来的不变,可以先新建一个空的hashmap,把map1和map2的数据都加进去就可以了
2、例如:
HashMap map3 = new HashMap();
for (Object key : map1.keySet())
map3.put(key, map1.get(key));
for (Object key : map2.keySet())
map3.put(key, map2.get(key));
//可以根据具体的类型加上泛型模板
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询