作业介绍

vector

vector 是 STL 提供的 ​内存连续的​、可变长度 的数组(亦称列表)数据结构。能够提供线性复杂度的插入和删除,以及常数复杂度的随机访问,它能够存放各种类型的对象。

定义

vector类 的属性和用法_vector 存入-CSDN博客

头文件vector

vector<int> v;
vector<int> v1(3, 6);//v1里包含3个6
vector<int> v2(v1.begin(), v1.end());//复制v1
vector<int> v3(v1);//复制v1
vector<vector<int> >;//二维数组

元素访问

vector 提供了如下几种方法进行元素访问

  1. at() v.at(pos) 返回容器中下标为 pos 的引用。如果数组越界抛出 std::out_of_range 类型的异常。
  2. operator[] v[pos] 返回容器中下标为 pos 的引用。不执行越界检查。
  3. front() v.front() 返回首元素的引用。
  4. back() v.back() 返回末尾元素的引用。

迭代器

vector 提供了如下几种 [迭代器]

  1. begin() 返回指向首元素的迭代器,其中 *begin = front
  2. end() 返回指向数组尾端占位符的迭代器,注意是没有元素的。
  3. rbegin() 返回指向逆向数组的首元素的逆向迭代器,可以理解为正向容器的末元素。
  4. rend() 返回指向逆向数组末元素后一位置的迭代器,对应容器首的前一个位置,没有元素。

长度和容量

与长度相关​:

  • empty() 返回一个 bool 值,即 v.begin() == v.end()true 为空,false 为非空。判断是否为空。
  • size() 返回容器长度(元素数量)。

元素增删及修改

  • push_back(x) 在末尾插入一个元素x,均摊复杂度为 ​常数​,最坏为线性复杂度。
  • insert(it,x) 支持在某个迭代器位置插入元素x、insert(it,n,x) 可以插入多个元素x。

  • clear() 清除所有元素
  • erase(it) 删除某个迭代器或者区间的元素,返回最后被删除的迭代器。
    erase(first,last),删除[first,last)中的元素。
  • pop_back() 删除末尾元素,常数复杂度。

其它

  • swap() 与另一个容器进行交换。

list

list 是 一个线性双向链表结构。能够提供常数复杂度插入和删除,以及线性复杂度的随机访问,它能够存放各种类型的对象。list支持双向迭代器,没有下标,必须使用迭代器遍历list。(由于不支持随机迭代器,不能写迭代器+x,迭代器-x,不能用sort()函数,但list拥有sort()成员函数)

定义

头文件list

list<int> v;

迭代器

list 提供了如下几种 [迭代器]

  1. begin() 获取链表的起始地址。
  2. end() 获取链表的结束地址。

长度和容量

与长度相关​:

  • empty() 判断链表是否为空。
  • size() 返回链表元素个数。

元素增删

  • push_back(x) 往链表尾部添加元素。
  • push_front(x) 往链表头部添加元素。
  • pop_back(x) 链表尾部移除元素。
  • pop_front(x) 链表头部添加元素。
  • insert(it,x) 支持在某个迭代器位置插入元素x、insert(it,n,x) 可以插入多个元素x。

  • clear() 清空链表
  • erase(开始地址,结束地址) 删除链表中指定范围之间的元素。
  • remove(值val) 删除和val相等的元素

其它

  • swap() 与另一个容器进行交换。
  • sort(链表对象) 链表元素排序
  • reverse(开始地址,结束地址) 翻转链表

题目

认领作业后才可以查看作业内容。
状态
正在进行…
题目
11
开始时间
2025-1-9 0:00
截止时间
3333-5-1 23:59
可延期
24 小时