HM231 学号索引

HM231 学号索引

HM231 学号索引

来源: 第 231 集 map容器-构造和赋值

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

map / multimap 是关联式容器,底层是二叉树,在 STL 里使用率仅次于动态数组和链表。它的高性能来自**键的索引**:像用身份证号从十几亿人里立刻对上一个人——说对 key,就能马上定位到 value

每个元素都是对组 pair:第一个分量是键(索引),第二个是实值。插入时无论键的顺序如何,都会**按键**自动排序,不是按实值排序。

map 不允许重复的键,multimap 允许。实值可以重复——两个学号不能一样,两个同名却可以。重复键再 insert 进不去,先插入的那一对留下。

模板参数要写两个类型。插入时括号里放一个匿名对组,例如 insert(pair<int,int>(1, 10))。遍历时取出的是对组:键用 first,实用 second,可写成 (*it).firstit->first

构造有默认构造和拷贝构造,赋值用 =。把头文件 map 包含进来。

把输入的键值对 insert 进默认构造的 m1,再拷贝构造 m2(m1),再 m3 = m2。依次打印三个容器。每个容器占一行,一对写成 key:value,对与对之间一个空格。

输入格式

第一行一个整数 \(n\)。

接下来 \(n\) 行,每行两个整数 \(k\)、\(v\),按给定顺序插入。当 \(n=0\) 时没有后续行。

输出格式

三行,分别是 m1、拷贝构造得到的 m2、赋值得到的 m3。空容器对应的那一行只输出换行。

样例

输入 #1

4
1 10
3 20
2 30
4 40

输出 #1

1:10 2:30 3:20 4:40
1:10 2:30 3:20 4:40
1:10 2:30 3:20 4:40

输入 #2

4
1 10
3 20
2 10
1 99

输出 #2

1:10 2:10 3:20
1:10 2:10 3:20
1:10 2:10 3:20

说明

\(0 \le n \le 1000\),键与值的绝对值不超过 \(10^9\)。

样例 #1 按 \(1,3,2,4\) 插入,打印仍按键变成 \(1,2,3,4\)。样例 #2 实值 \(10\) 出现两次合法;键 \(1\) 的第二次插入失败,留下先写入的 \(10\) 而不是 \(99\)。

信息

ID
1230
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者