vector(向量)
vector是一种类模板,属于C++标准模板库(STL)中的一部分,它是一个可以存储任意数据类型
元素的动态数组
(封装好的类),也因此被我们称之为容器。
使用它需要包含的头文件: <vector>
一、vector初始化
1.构造函数:
初始化:
// 构造一个存放int类型数据的空vector容器
vector<int> p;
// 构造长度为6的vector对象p1, 内容采用默认值为0
vector<int> p1(6);
// 创建长度为3的vector对象p1, 内容全为10
vector<int> p2(3, 10);
一些不是很常用的初始化如下:
// 拷贝构造函数, 将p2的值赋值给p3,它们的值是相等的
vector<int> p3(p2);
// 将p2 中(下标为0-1)前两个值赋值给 p4
// begin() 是第一个元素位置
// vector<int> p4(开始位置, 结束位置);
vector<int> p4(p2.begin(), p2.begin() + 2);
// 也可以使用数组创建, 用法跟前一个相似
int arr[6] = {1, 2, 3, 4, 5, 6};
vector<int> p5(arr, arr + 6);
二、其他常用方法
1.操作:
1.1插入
// 给容器p 赋值,容量为8,内容全为7
// 也可以使用迭代器或数组赋值
p.assign(8, 7);
// 在容器末尾添加元素6
p.push_back(6);
// 在第一个位置插入66,插入后会返回新数据的位置
p.insert(p.begin(), 66);
// 在容器p的末尾 插入3个 77
p.insert(p.end(), 3, 77);
// 在容器p的末尾 插入区间[beg, end)区间的数据
// 可以使用迭代器 也可以使用数组
p.insert(p.end(), arr, arr + 3);
1.2删除
// 移除容器中最后一个元素
p.pop_back();
// 删除整个p容器中的所有元素
p.clear();
// 删除指定位置的单个元素(下标从0开始)
p.erase(p.begin() + 1);
// 删除指定范围的元素
p.erase(p.begin(), p.begin() + 3);
1.3修改
// 修改p容器下标为2的元素值为888 注意是否越界
p[2] = 888;
// 修改p容器下标为3的元素值为666 注意是否越界
p.at(3) = 666;
// 修改p容器第一个元素值为111
p.front() = 111;
// 修改p容器最后一个元素值为888
p.back() = 33333;
// 将p和p1的内容进行交换
// 可以这样理解(当函数执行后,当前p == 前p1 当前p1 == 前p)
p.swap(p1);
1.4访问
// 访问指定下标的元素(返回容器p下标为2的元素)
p.at(2);
p[2];
// 访问容器p的第一个元素
p.front();
// 访问容器p的最后一个元素
p.back();
// 返回容器p中元素的个数
p.size();
// 判断容器是否为空
p.empty();
// 返回容器第一个元素的指针
p.data();
// 返回可存储的最大元素个数
p.max_size();
// 返回容器的大小
// 有时候会跟size()一样,有时会比size()大
p.capacity();
1.6重置大小
// 重新指定容器的长度为6,若容器变长,则以默认值填充新位置。
// 如果容器变短,则末尾超出容器长度的元素被删除。
p.resize(6);
// 重新指定容器的长度为6,若容器变长,则以88值填充新位置。
// 如果容器变短,则末尾超出容器长度的元素被删除
p.resize(6, 88);