#VECTOR001. vector 动态数组操作

vector 动态数组操作

vector 动态数组操作

题目背景

vector 是长度可变的连续数组,支持下标访问、末尾添加、末尾删除、指定位置插入和指定位置删除。

题目描述

现有一个包含 nn 个整数的动态数组,接下来执行 mm 次操作。

操作共有五种:

  • 1 x:在数组末尾添加整数 xx
  • 2:删除数组末尾元素;如果数组为空,则忽略本次操作;
  • 3 p x:在第 pp 个元素之前插入整数 xx,其中 1psize+11\le p\le size+1;当 p=size+1p=size+1 时表示插入到末尾;
  • 4 p:删除当前数组中的第 pp 个元素;
  • 5:将当前数组按照从小到大的顺序排序。

所有操作完成后,输出动态数组的最终状态。

输入格式

第一行输入两个整数 n,mn,m

第二行输入 nn 个整数。当 n=0n=0 时,该行为空行。

接下来 mm 行,每行输入一次操作。

保证操作 3 和操作 4 中的位置合法。

输出格式

第一行输出最终数组的元素个数。

第二行输出最终数组中的所有元素,相邻元素用一个空格分隔。当数组为空时,第二行为空行。

输入输出样例

3 3
30 10 20
3 2 99
4 3
5
3
10 30 99

数据范围

  • 0n50000\le n\le 5000
  • 0m50000\le m\le 5000
  • 数组中所有整数的绝对值不超过 10910^9

提示

pp 个元素对应的迭代器位置为:

a.begin() + p - 1

来源

数据结构课堂练习——vector 的基本操作