#1515. vector模板题

vector模板题

题目描述

现有一个动态数组(Vector)容器,支持以下操作:插入元素、删除元素、查询元素和修改元素。你需要实现这个动态数组,并处理可能的边界情况。具体规则如下:

  1. 插入操作:在数组末尾添加元素。
  2. 删除操作:删除指定位置的元素,若位置不合法则操作无效。
  3. 查询操作:获取指定位置的元素,若位置不合法则返回特殊值。
  4. 修改操作:修改指定位置的元素值,若位置不合法则操作无效。

操作完成后,需输出最终数组的元素个数及所有元素。

输入格式

  • 第一行输入一个整数q1 ≤ q ≤ 1000000),表示操作的总次数。
  • 接下来q行,每行表示一次操作,格式如下:
    • 插入操作1 x(在数组末尾添加元素x)。
    • 删除操作2 pos(删除位置pos的元素,位置从0开始)。
    • 查询操作3 pos(查询位置pos的元素)。
    • 修改操作4 pos x(将位置pos的元素修改为x)。

输出格式

  • 对于每次查询操作(操作3),输出一行整数,表示查询结果。若位置不合法,输出-1
  • 所有操作完成后,输出两行:
    • 第一行:一个整数,表示数组的元素个数。
    • 第二行:数组的所有元素,按顺序输出,元素之间用空格分隔。若数组为空,输出空行。

样例 1 输入

5
1 10
1 20
3 1
2 0
3 0

样例 1 输出

20
20
1
20

样例说明

  1. 插入操作:依次插入10和20,数组变为[10, 20]
  2. 查询操作:查询位置1的元素,返回20。
  3. 删除操作:删除位置0的元素,数组变为[20]
  4. 查询操作:查询位置0的元素,返回20。
  5. 最终输出:数组元素个数为1,元素为20。

测试点约束

  • 操作次数 q ≤ 1000000
  • 元素值x的取值范围为int(-2^31 ~ 2^31-1)。
  • 所有操作的位置pos均为非负整数。
  • 除了操作3,如果操作不合法则忽略