一. 什么是vector?
vector(向量)是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版
特点:
1. vector是表示可变大小数组的序列容器,采用的连续存储空间来存储元素,可以采用下标对vector的元素进行访问
2.它的大小是可以动态改变的,而且它的大小会被容器以一种有效的方式动态增长,因此相对于数组占用了更多的存储空间。
2.与其它动态序列容器相比(deque, list and forward_list), vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。
二. vector的使用
在使用vector时需要包含头文件
#include<vector>
2.1 常用接口:
构造函数
(constructor)构造函数声明 | 接口说明 |
vector()(重点) | 无参构造 |
vector(size_type n, const value_type& val = value_type()) | 构造并初始化n个val |
vector (const vector& x); (重点) | 拷贝构造 |
vector (InputIterator first, InputIterator last); | 使用迭代器进行初始化构造 |
iterator 的使用
iterator的使用 | 接口说明 |
begin + end(重点) |
获取第一个数据位置的iterator/const_iterator, 获取最后一个数据的下一个位置的iterator/const_iterator |
rbegin + rend | 获取第一个数据位置的iterator/const_iterator, 获取最后一个数据的下一个位置的iterator/const_iterator |
Capacity容量
容量空间 | 接口说明 |
size | 获取数据个数 |
capacity | 获取容量大小 |
empty | 判断是否为空 |
resize(重点) | 改变vector的size |
reserve (重点) | 改变vector的capacity |
增删查改
vector增删查改 | 接口说明 |
push_back(重点) | 尾插 |
pop_back (重点) | 尾删 |
find | 查找(这个是算法模块实现,不是vector的成员接口) |
insert | 在position之前插入val |
erase | 删除position位置的数据 |
swap | 交换两个vector的数据空间 |
operator[] (重点) | 像数组一样访问 |
2.2 功能代码演示
2.2.1 vector的构建
void test()
{
vector<int> first; // 无参构造
vector<int> second(4, 100); // 使用4个1