第二道笔试题没有完成,有些遗憾,在此补充记录一下。做的太认真就没有记题目什么的,那就靠回忆吧
Problem Description
大概是说一个解密游戏,A有密报和对应的译文,密报和译文都是以数字、大小写字母和下划线组成的,且一一对应。B在知道A的这段密报和对应的译文的基础上,另外截取了N段A的密报,求这些密报对应的译文。
输入:
一段密报
一段密文
N
N段密报
输出:
对应的N段译文,每段换行输出
Mentality
之前看过关联容器map和unordered_map,但是没有经常具体使用,一时间记不太清楚怎么使用了,笔试结束后,查阅了文档,是可以做出来的,所以思路没有问题。
遍历已知密报和译文,将映射关系放入map内,然后再输入N段新的密报,从map中找出对应的字符,再组合成译文。
Other Details
1.在STL的容器内部有11种通用容器,其中包括7种序列容器和4种关联容器。关联容器全部是key-value形式的数据结构:map、set、multimap、multiset。
set:值和键类型相同,且只能有唯一的值 [1,2,3]
multiset:值和键类型相同,值可以存在相同的 [1,1,2,2,3]
map:值和键类型可以不同,值只能与唯一的键关联 [[1,2],[2,3],[3,4]]
multimap:值和键类型可以不同,值可与多个键关联 [[1,2],[1,3],[3,4]]
摘自https://blog.csdn.net/weixin_39390393/article/details/89345412
2.使用map
map类头文件:
#include < map >
map为模板类,需要加两个参数:关键字和存储对象
map<int, string> student;
(定义一个用int作为索引,指针指向string)
map的简单构造
map<int, string> student;
map插入操作:
第一种 用insert和pair
student.insert(pair<int, string>(1, “abc”));
第二种 像数组一样用下标插入
student[2] = “def”;
map查找元素:
若关键字存在于map,则返回所在对象的位置,否则返回迭代器iterator,等于end函数的值。
auto iter = student.find(1);
if(iter != student.end())
cout<<“Find, the value is”<< i