关闭

学习STL@map篇

50人阅读 评论(0) 收藏 举报
分类:

描述

数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和

 

函数说明:

public int mergeRecord(List oriList, List rstList)

数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和。


 @param oriList 原始表记录。 以List方式存放,TableRecord定义见TableRecord.java,

                调用者无需对leRecord.java做任何修改
 @param rstList 合并后的表记录 , 以List方式存放
 @return  返回合并后表的个数

 

 

知识点
运行时间限制 10M
内存限制 128
输入

先输入键值对的个数
然后输入成对的index和value值,以换行符隔开

输出

输出合并后的键值对(多行)

样例输入 4 0 1 0 2 1 2 3 4
样例输出 0 3 1 2 3 4
华为oj系统初级题:合并表记录

自己用的算法超时了,看到评论区有贴map来做,这里引用一下,学习一下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++)
{
int index, value;
cin >> index >> value;
if (m.find(index) == m.end())
m[index] = value;
else
m[index] += value;
}
map<int, int>::iterator beg = m.begin();
for (;beg != m.end();++beg)
cout << beg->first << endl << beg->second << endl; 
return 0;
}


1.首先看一下头文件,要包含map头文件

2.定义变量的方法:map<int,int>m;

map的基本构造函数有以下几种:

map<string,int>mapstring;      map<int,string>mapint;      map<string,char>mapstring;

map<char,string>mapchar;      map<char,int>mapchar;    map<int,int>mapint;

3.map的key是自动升序的,不能用sort函数,以下是map的基本操作函数:

begin() 返回map头部指针;clear() 删除所有元素; count() 返回指定元素出现的次数

erase() 删除一个元素;  insert()  插入元素;  find()查找一个元素

已经在VS上编译过的来看,insert函数参数可以是pair<int,int>(a,b);也可以是map<int,int>::value_type(a,b);

不过更常见的用法是m[a]=b;

find的用法:参数是第一个数,就是key.  m.find(a)返回的是key为a的元素的指针(迭代器)。

若计li=m.find(a);那么li->first就是a,li->second就是b (m中没有重复键入key相同的元素的情况下)。

4.本例中涉及到的map的用法还比较少,还剩一个定义属于map的元素:

map<int,int>::iterator 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4205次
    • 积分:472
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档