目录
一、基本概念
向量(vector)就是线性数组的一种抽象与泛化,它也是由具有线性次序的一组元素构成的集合V = { v0, v1, …, vn-1 },其中的元素分别由秩相互区分。
-
各元素的秩(rank)互异,且均为[0, n)内的整数。(类似数组的下标)
-
向量的各元素可以为不同类型,也可通过泛型指定某一特定的类型。
二、接口
1、向量的操作接口
- 列表
操作接口 | 功能 | 适用对象 |
---|---|---|
size() | 报告向量当前的规模(元素总数) | 向量 |
get( r) | 获取秩为r的元素 | 向量 |
put(r, e) | 用e替换秩为r元素的值 | 向量 |
insert(r, e) | e作为秩为r的元素插入,原后继元素依次后移 | 向量 |
remove( r) | 删除秩为r的元素,返回该元素中原存放的对象 | 向量 |
disordered() | 判断所有元素是否已按费降序排列 | 向量 |
sort() | 调整各元素的位置,使之按非降序排列 | 向量 |
find(e) | 查找等于e且秩最大的元素 | 向量 |
search(e) | 查找目标元素e,返回不大于e且秩最大的元素 | 有序向量 |
deduplicate() | 剔除重复元素 | 向量 |
uniquify() | 剔除重复元素 | 有序向量 |
traverse() | 遍历向量并统一处理所有元素,处理方法由函数对象指定 | 向量 |
-
具体实例
#include <iostream> #include <vector> using namespace std; vector<int> v; //一个空向量 vector<int> s(32, 63); //{63, 63, 63, ..., 63}, 创建一个长度为32内容全是63的向量 s.insert(s.begin + 2, 2017); //{63, 63, 2017, 63, ..., 63},在秩为2的地方插入2017 s.erase(s.end - 30, s.end); //{63, 63, 2017},删除后