C++ STL 常用容器实战指南
STL(Standard Template Library)是 C++ 标准库的核心组成部分,提供了丰富的数据结构与算法。掌握这些容器不仅能提升开发效率,更是理解底层内存管理与性能优化的关键。
Vector:动态数组的倍增策略
vector 是最常用的序列容器,底层基于连续内存空间。它的核心优势在于支持随机访问,但扩容机制需要特别注意。
为什么会有倍增思想?
系统分配内存的时间主要取决于申请次数而非总大小。如果频繁申请小块内存,开销巨大。因此 vector 在容量不足时通常采用倍增策略(例如容量翻倍),这样均摊下来插入操作的复杂度接近 O(1)。
#include <iostream>
#include <vector>
int main() {
std::vector<int> v;
// 预分配空间可以减少扩容次数
v.reserve(1000);
for (int i = 0; i < 1000; ++i) {
v.push_back(i);
}
return 0;
}
常用操作:
size()/empty():获取元素个数或判断是否为空。push_back()/pop_back():尾部增删。front()/back():访问首尾元素。begin()/end():迭代器遍历。[]:支持下标访问,且 vector 整体支持字典序比较运算。
Pair:二元组结构体
pair 可以看作是一个包含两个变量的结构体,常用于存储关联数据(如坐标、键值对)。它内部定义了比较运算符,排序时默认以 first 为第一关键字,second 为第二关键字进行字典序比较。
#include <utility>
#include <algorithm>
std::pair<int, int> p = {, };
std::pair<, std::pair<, >> complex_p = {, {, }};


