C++容器map的key相同,如何合并对应的values
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++容器map的key相同,如何合并对应的values相关的知识,希望对你有一定的参考价值。
例如若干学生有学号,成绩,课程三个属性
学号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);
...就像为某个班级的学生计算总分一样,输入学生的学号和每课成绩,自动计算出每个学生的总分,形成新的数据。
该怎么做??
也就是说,只要把一个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));
//可以根据具体的类型加上泛型模板 参考技术A 使用map1[key] += values;应该可以,你试试。如果不存在则会新建,存在就加上数据。本回答被提问者采纳
使用例子解释C++中的map容器
map是一个以键值对形式存储元素的容器。它类似于Java中的集合,PHP中的关联数组或JavaScript中的对象。
下面是使用 map 的好处:
map 只存储唯一的key,同时这些key都是排序的
由于 map 中的key都已经排序,再里面查找一个元素非常快
每一个元素 key都只对应一个值
下面看一个例子:
#include <iostream>
#include <map>
using namespace std;
int main (){
map<int, int> numberValues;
map<char, int> charValues;
//initializing
numberValues[1]=10;
numberValues[3]=20;
numberValues[2]=30;
numberValues[6]=40;
charValues['a']=10;
charValues['b']=20;
charValues['c']=30;
charValues['d']=40;
map<int, int>::iterator it1;
map<char, int>::iterator it2;
for(it1=numberValues.begin(); it1!=numberValues.end(); ++it1){
cout << it1->first << " => " << it1->second << '\n';
}
for (it2=charValues.begin(); it2!=charValues.end(); ++it2) {
cout << it2->first << " => " << it2->second << '\n';
}
return 0;
}
Output
1 => 10
2 => 30
3 => 20
6 => 40
a => 10
b => 20
c => 30
d => 40
Map的基本用法
创建一个 map 对象
map<string, int> myMap;
插入
使用成员函数进行插入
myMap.insert(make_pair("money", 100));
myMap.insert(make_pair("holiday", 200));
同时也可以直接用 [] 操作符
myMap["money"] = 100;
访问
可以直接使用myMap["money"]
访问一个特定的元素。
也可以使用如下的iterator来进行遍历。
map<char, int>::iterator it1;
for(it1=numberValues.begin(); it1!=numberValues.end(); ++it1){
cout << it1->first << " => " << it1->second << '\n';
}
以上是关于C++容器map的key相同,如何合并对应的values的主要内容,如果未能解决你的问题,请参考以下文章