HM233 词典四插

HM233 词典四插

HM233 词典四插

来源: 第 233 集 map容器-插入和删除

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

map 的插入仍用 insert,但每一项都是对组。常用四种写法:

  1. insert(pair<int,int>(k, v))
  2. insert(make_pair(k, v)),不必再写模板参数;
  3. insert(map<int,int>::value_type(k, v)),即作用域下的“值类型”,代码较长;
  4. m[k] = v,最省事,但**不建议用来插入**。

中括号的正当用途是:在**确定键已存在**时,用 m[k] 取出实值。若键不存在还去读 m[k],它会当场造出一对 k 与默认实值 \(0\)。插错键就会多出垃圾数据。

删除用 erase

  • erase(it):删迭代器指向的那一对。begin() 是键最小的那一对;
  • erase(k):**按键**删除整对。传一个只当实值出现过的数,不会删掉那一对;
  • erase(begin(), end()):区间删,传入首尾迭代器等于清空。

clear() 也会清空。

把第 \(1\) 个键值对用写法 1 插入,第 \(2\) 个用写法 2,第 \(3\) 个用写法 3,其余用写法 4。然后:

  1. 打印整表;
  2. 读入查询键 \(q\),输出 m[q](键不存在时会插入 \(0\)),再打印整表;
  3. 若表非空,erase(begin()),再打印;
  4. 读入删除键 \(d\),按键 erase(d),再打印;
  5. erase(begin(), end()) 清空,再打印;
  6. clear() 一次,再打印。

每个容器占一行,一对写成 key:value

输入格式

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

接下来 \(n\) 行,每行两个整数 \(k\)、\(v\)。当 \(n=0\) 时没有这些行。

然后一行整数 \(q\),表示用中括号访问的键。

然后一行整数 \(d\),表示按键删除的目标。

输出格式

第一行:插入完成后的表。

第二行:m[q] 的值。

第三行到第七行:访问、删最小键、按键删除、区间清空、clear 之后的表。空表输出空行。

样例

输入 #1

4
1 10
2 20
3 30
4 40
5
3

输出 #1

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

输入 #2

3
10 30
20 40
30 50
99
30

输出 #2

10:30 20:40 30:50
0
10:30 20:40 30:50 99:0
20:40 30:50 99:0
20:40 99:0

说明

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

样例 #1 访问不存在的 \(5\) 会插入 5:0;再删最小键 \(1\),再按键删 \(3\)。样例 #2 里 \(30\) 既是键也是别人的实值,erase(30) 只去掉键为 \(30\) 的那一对,键 \(10\) 的实值 \(30\) 不受影响——但该对已在上一步被 erase(begin()) 删掉。

信息

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