C++ STL 提供了丰富的容器和算法组件,是算法竞赛与工程开发中的重要工具。本文重点讲解常用容器的特性、API 及实战技巧。
1. STL 容器概览
C++ STL 提供了六大类容器(按存储方式和访问特性划分):
| 类别 | 容器 | 特点 |
|---|---|---|
| 序列式容器 | vector, deque, list, forward_list | 元素线性排列,可按位置访问 |
| 关联式容器 | set, multiset, map, multimap | 基于红黑树,自动排序,键值唯一或可重复 |
| 无序关联容器 | unordered_set, unordered_map 等 | 基于哈希表,平均 O(1) 查找 |
| 容器适配器 | stack, queue, priority_queue | 封装其他容器,提供特定接口 |
下面重点介绍刷题中最常用的几个。
2. vector:动态数组之王
2.1 基础操作
#include <vector>
using namespace std;
vector<int> v;
// 空 vector
v.push_back(1); // 尾部插入
v.pop_back(); // 尾部删除
v.size(); // 元素个数
v.empty(); // 是否为空
v[0] 或 v.at(0); // 访问元素(at 有边界检查)
v.clear(); // 清空所有元素
2.2 初始化技巧
vector<int> ;
vector<> v2 = {,,};
;

