题目描述
数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
输入描述:
先输入键值对的个数
然后输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
C++ code:
#include <iostream>
#include <map>
using namespace std;
int main()
{
int sum;
cin >> sum;
map<int, int>m;
int Key;
int Value;
for (int i = 0; i < sum; i++)
{
cin >> Key >> Value;
if (m.find(Key) == m.end()) //can not find find操作返回指向元素的迭代器,如果不存在,则返回 end迭代器。
{
m[Key] = Value;
}
else
{
m[Key] = m[Key] + Value;
}
}
map<int, int>::iterator iter; //map内部已经使得 key的大小排序了
for (iter = m.begin(); iter != m.end(); iter++)
{
cout << iter->first << " " << iter->second << endl;
}
return 0;
}
idea:
1、本来想的用二维数组来做,但是很麻烦。
2、此程序用到了STL,map来写,利用容器的特性,方便编程。
3、代码不复杂,关键是懂得STL map的语法,本文最后附上。
c++中map的用法详解
http://blog.csdn.net/sunquana/article/details/12576729