一、vector 是什么

vector动态数组,连续内存空间,支持随机访问,尾部增删效率高,中间插入删除慢,是最常用的 STL 序列容器。

头文件:

cpp

运行

#include <vector>
using namespace std;

二、常用构造方式

cpp

运行

// 1. 空容器
vector<int> v1;

// 2. n个初始值
vector<int> v2(5, 10);  

// 3. 初始化列表
vector<int> v3 = {1,2,3,4};

// 4. 拷贝构造
vector<int> v4(v3);

三、增删改查 核心操作

1. 添加元素

cpp

运行

// 尾部追加
v.push_back(10);

// 尾部构造元素(更高效)
v.emplace_back(20);

// 指定位置插入
v.insert(v.begin(), 99);     

2. 删除元素

cpp

运行

// 删除最后一个元素
v.pop_back();

// 删除指定迭代器位置元素
v.erase(v.begin());

// 删除区间 [左, 右)
v.erase(v.begin(), v.begin()+2);

// 清空所有元素
v.clear();

3. 访问元素

cpp

运行

// 下标随机访问
v[0];

// 越界安全检查
v.at(0);

// 首元素
v.front();

// 尾元素
v.back();

// 获取底层数组首地址
int* p = v.data();

四、容量与大小操作

cpp

运行

// 实际元素个数
v.size();

// 容器最大可容纳数量
v.max_size();

// 容器已分配内存容量
v.capacity();

// 是否为空
v.empty();

// 预留空间,避免频繁扩容
v.reserve(100);

// 收缩容量到实际元素大小
v.shrink_to_fit();

// 重置元素个数
v.resize(10);

五、遍历方式

cpp

运行

// 1. 下标遍历
for(int i=0;i<v.size();i++){ cout<<v[i]; }

// 2. 迭代器遍历
for(vector<int>::iterator it = v.begin();it!=v.end();it++){}

// 3. 范围for
for(auto x : v){ cout<<x; }

六、常用赋值与交换

cpp

运行

// 赋值
v.assign(3, 66);

// 交换两个vector
swap(v1, v2);

七、vector 重点特性(必记)

  1. 底层连续内存,支持下标随机访问。
  2. 尾部加删快,中间插入删除要移动元素,效率低。
  3. 空间不够会自动扩容,重新申请内存、拷贝旧元素、释放旧空间。
  4. 插入、扩容、删除中间元素容易造成迭代器失效

八、极简总结

增:push_backemplace_backinsert删:pop_backeraseclear查:[]atfrontback容量:sizecapacityreserveresize遍历:下标、迭代器、范围 for

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐