Files
Data-Structure/STL/STL-Vector
e2hang c5fcf58332 STL
2025-08-01 00:26:26 +08:00
..
New
2025-08-01 00:22:15 +08:00
New
2025-08-01 00:22:15 +08:00
STL
2025-08-01 00:26:26 +08:00

以下是 C++ STL 中 std::vector全面用法大全(涵盖常用与高级功能,包含中英文注释,适合查阅与系统学习):


🔷 std::vector 概述

std::vector 是一个动态数组容器,支持快速的随机访问与末尾插入。

#include <vector>
using namespace std;

vector<int> v;             // 空 vector
vector<int> v(5);          // 5 个元素,值为 0
vector<int> v(5, 10);      // 5 个元素,值为 10
vector<int> v2 = {1, 2, 3}; // 列表初始化
vector<int> v3(v2);        // 拷贝构造

🧰 常用成员函数分类一览

构造与初始化

vector<int> v;                  // 默认构造
vector<int> v(10);              // 10个默认值元素int 默认是0
vector<int> v(5, 3);            // 5个3
vector<int> v2 = {1, 2, 3};     // 初始化列表
vector<int> v3(v2);             // 拷贝构造
v.assign(4, 100);               // 用4个100赋值
v.assign({1, 2, 3, 4});         // 用初始化列表赋值

容量相关

v.size();       // 元素个数
v.capacity();   // 容量(预留空间)
v.max_size();   // 最大可容纳元素数
v.empty();      // 是否为空
v.resize(10);   // 调整为10个元素默认填0
v.resize(10, -1); // 用-1填充新元素
v.shrink_to_fit(); // 缩容至实际大小
v.reserve(100); // 提前分配至少100个容量

元素访问

v[0];           // 下标访问
v.at(0);        // 范围检查的访问,越界会抛异常
v.front();      // 第一个元素
v.back();       // 最后一个元素
v.data();       // 返回底层数组指针T* 类型)

修改函数

v.push_back(5);       // 末尾添加
v.pop_back();         // 移除末尾元素
v.insert(v.begin(), 3);          // 在开头插入3
v.insert(v.begin() + 2, 4, 9);   // 在第3个位置插入4个9
v.insert(v.end(), {7, 8, 9});    // 插入初始化列表
v.erase(v.begin());             // 删除第一个
v.erase(v.begin(), v.begin()+3);// 删除前3个
v.clear();            // 清空所有元素
v.swap(v2);           // 与另一个vector交换内容

迭代器相关

vector<int>::iterator it = v.begin();    // 正向迭代器
vector<int>::iterator end = v.end();

vector<int>::reverse_iterator rit = v.rbegin(); // 反向迭代器
vector<int>::const_iterator cit = v.cbegin();   // 只读正向
vector<int>::const_reverse_iterator crit = v.crbegin(); // 只读反向

排序与查找(配合算法头 <algorithm>

#include <algorithm>

sort(v.begin(), v.end());         // 升序
sort(v.rbegin(), v.rend());       // 降序
reverse(v.begin(), v.end());      // 翻转
find(v.begin(), v.end(), 3);      // 查找3
count(v.begin(), v.end(), 3);     // 统计3出现次数

与其他容器函数通用的操作

for (auto x : v) cout << x;        // 范围for
for (auto it = v.begin(); it != v.end(); ++it)
    cout << *it;

C++11~20 新特性支持

v.emplace_back(10);              // 直接构造末尾元素
v.emplace(v.begin(), 20);        // 在指定位置构造

📝 常见用途小例子

1. 输入一串数字

vector<int> v;
int x;
while (cin >> x) v.push_back(x);

2. 二维 vector

vector<vector<int>> grid(5, vector<int>(10, 0)); // 5x10 矩阵

3. 排序 + 去重

sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());

🧠 小总结

分类 函数举例
初始化 vector<int> v(10, 5)
容量操作 resize, reserve, shrink_to_fit
元素访问 [], at, front, back, data
增删改 insert, erase, push_back, pop_back, clear
迭代器 begin, end, rbegin, cbegin, crend
算法配合 sort, find, reverse, unique
C++11/14特性 emplace, auto, range-for

如需我生成一份 .cpp 文件、或你希望看到某种使用场景的完整案例,比如:

  • 大量数据插入性能优化
  • 模拟二维表格
  • 搜索 + 删除特定值
  • vector 实现栈/队列

我可以为你分别写出来。需要哪一种?

Member functions (constructor) Construct vector (public member function) (destructor) Vector destructor (public member function) operator= Assign content (public member function)

Iterators: begin Return iterator to beginning (public member function) end Return iterator to end (public member function) rbegin Return reverse iterator to reverse beginning (public member function) rend Return reverse iterator to reverse end (public member function) cbegin Return const_iterator to beginning (public member function) cend Return const_iterator to end (public member function) crbegin Return const_reverse_iterator to reverse beginning (public member function) crend Return const_reverse_iterator to reverse end (public member function)

Capacity: size Return size (public member function) max_size Return maximum size (public member function) resize Change size (public member function) capacity Return size of allocated storage capacity (public member function) empty Test whether vector is empty (public member function) reserve Request a change in capacity (public member function) shrink_to_fit Shrink to fit (public member function)

Element access: operator[] Access element (public member function) at Access element (public member function) front Access first element (public member function) back Access last element (public member function) data Access data (public member function)

Modifiers: assign Assign vector content (public member function) push_back Add element at the end (public member function) pop_back Delete last element (public member function) insert Insert elements (public member function) erase Erase elements (public member function) swap Swap content (public member function) clear Clear content (public member function) emplace Construct and insert element (public member function) emplace_back Construct and insert element at the end (public member function)

Allocator: get_allocator Get allocator (public member function)

Non-member function overloads relational operators Relational operators for vector (function template) swap Exchange contents of vectors (function template)