HM185 标准库分拣台

HM185 标准库分拣台

HM185 标准库分拣台

来源: 第 185 集 STL初识-STL的基本概念

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

软件界一直希望少做重复劳动。面向对象用封装、继承、多态提高复用;泛型编程用模板把类型参数化。多数时候数据结构和算法没有统一标准,不同人会写出功能相同、名字不同的加法。于是出现了 STL(Standard Template Library,标准模板库):系统提供一套标准的函数模板和类模板,大家直接用。

广义上 STL 分三大块:**容器**、**算法**、**迭代器**。容器和算法通过迭代器无缝衔接——迭代器是二者之间的桥梁(胶合剂)。算法必须经过迭代器才能访问容器里的元素;每个容器都有自己专属的迭代器,使用时可以先把它当成指针(解引用、箭头)。STL 里的技术基本都采用类模板或函数模板。

细分则有六大组件,面试常问全名:

  1. 容器:放数据。常见的有 vectorlistdequesetmap 等。
  2. 算法:解决问题,头文件名就是 algorithm。常见的有 sortfindcopyfor_each
  3. 迭代器:容器与算法的粘合剂。
  4. 仿函数:重载函数调用运算符 () 的类,对象用起来像函数,用来给算法换策略。
  5. 适配器(有的书叫配接器):修饰、组装接口。
  6. 空间配置器:负责空间的配置与管理(例如容器在堆区的开辟与释放),使用容器时不必自己管这块。

本课详细展开前四个;后两个只需知道用途。

容器按数据结构可再分成两类:

  • 序列式:强调值的排列,每个元素有固定位置。按 1 3 5 4 2 放入,取出来仍是 1 3 5 4 2
  • 关联式:放入时就会排序,没有严格按插入次序的物理顺序。同一批数放进去,取出来可能是 1 2 3 4 5

算法也分两类:

  • 质变算法:运算期间会改区间内的元素,例如拷贝出另一份、首尾对调、删除。
  • 非质变算法:不改区间内的元素,例如查找、计数、遍历、求极值。

迭代器按能力分为五种:**输入**(只读)、**输出**(只写)、**向前**(只能 ++)、**双向**(++--)、**随机访问**(可以一次跳多格,最强)。常用容器提供的都是双向或随机访问迭代器。

请按下面规则完成分拣。

输入格式

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

第二行 \(n\) 个整数 \(a_i\),表示按此顺序放入货架。

第三行一个整数 \(m\)。

接下来 \(m\) 行,每行一个操作名,只可能是:

copy reverse erase replace find count for_each extremum

其中前四个按质变处理,后四个按非质变处理。

再一行一个整数 \(p\)。

接下来 \(p\) 行,每行一个组件英文名,只可能是:

container algorithm iterator functor adapter allocator

再一行一个整数 \(q\)。

接下来 \(q\) 行,每行一个迭代器能力词,只可能是:

readonly writeonly increment both jump

分别对应:只读、只写、只能向前、双向、随机跳跃。

输出格式

第一行:按序列式规则输出 \(n\) 个整数(插入顺序),空格分隔。

第二行:按关联式规则输出这 \(n\) 个数的升序结果,空格分隔。

接下来 \(m\) 行:每个操作输出 质变非质变

接下来 \(p\) 行:每个组件输出中文名,依次为 容器算法迭代器仿函数适配器空间配置器

接下来 \(q\) 行:每种能力输出 输入输出向前双向随机

行末无多余空格。

样例

输入 #1

5
1 3 5 4 2
4
copy
find
reverse
count
3
container
functor
allocator
4
readonly
increment
both
jump

输出 #1

1 3 5 4 2
1 2 3 4 5
质变
非质变
质变
非质变
容器
仿函数
空间配置器
输入
向前
双向
随机

输入 #2

3
9 9 1
2
erase
for_each
2
adapter
algorithm
1
writeonly

输出 #2

9 9 1
1 9 9
质变
非质变
适配器
算法
输出

说明

\(1 \le n,m,p,q \le 1000\),\(|a_i| \le 10^9\)。

  • 关联式按**升序排序**模拟「放入时就排序」;相同值全部保留。
  • adapter 与配接器是同一组件,输出统一写成 适配器
  • 常用容器的迭代器属于双向或随机访问,本题只按输入的能力词分类,不要求判断某个容器属于哪一种。

信息

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