HM231 学号索引
HM231 学号索引
来源: 第 231 集 map容器-构造和赋值
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
map / multimap 是关联式容器,底层是二叉树,在 STL 里使用率仅次于动态数组和链表。它的高性能来自**键的索引**:像用身份证号从十几亿人里立刻对上一个人——说对 key,就能马上定位到 value。
每个元素都是对组 pair:第一个分量是键(索引),第二个是实值。插入时无论键的顺序如何,都会**按键**自动排序,不是按实值排序。
map 不允许重复的键,multimap 允许。实值可以重复——两个学号不能一样,两个同名却可以。重复键再 insert 进不去,先插入的那一对留下。
模板参数要写两个类型。插入时括号里放一个匿名对组,例如 insert(pair<int,int>(1, 10))。遍历时取出的是对组:键用 first,实用 second,可写成 (*it).first 或 it->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
- 通过率
- ?
- 上传者