C++ STL 常用容器详解
STL(Standard Template Library)是 C++ 标准库的核心组成部分,提供了丰富的数据结构和算法。对于初学者和进阶开发者来说,掌握常用容器的特性与使用场景至关重要。本文将系统梳理 vector、pair、string、队列栈以及各类关联容器的核心用法。
1. Vector:动态数组
Vector 是最常用的序列容器,底层基于连续内存空间。它支持随机访问,但插入删除操作可能涉及内存移动。
倍增思想与内存管理
系统为程序分配空间时,时间与申请次数密切相关。申请一个大小为 1000 的数组,比申请 1000 次大小为 1 的数组快得多。因此,变长数组应尽量减小申请空间的次数。
当 Vector 空间不足时,通常采用倍增策略(如扩容至原大小的 2 倍)来重新分配内存。这样能保证均摊时间复杂度较低,避免频繁触发内存拷贝。
常用 API
#include <vector>
using namespace std;
vector<int> v;
v.push_back(1); // 尾部插入
v.pop_back(); // 尾部弹出
v.size(); // 元素个数
v.empty(); // 判空
v.clear(); // 清空
v.front(); // 首元素
v.back(); // 尾元素
v.begin(); // 迭代器起始
v.end(); // 迭代器结束
Vector 支持比较运算,默认按字典序大小排序。
2. Pair:二元组
Pair 可以看作是一个包含两个变量的结构体,内部已定义好比较函数。常用于存储具有两种属性的数据,例如坐标 (x, y) 或键值对。
定义与构造
pair<int, int> p(1, 2);
p.first = 1; // 第一个元素
p.second = 2;
pair<, pair<, >> p2 = {, {, }};


