C++ STL 常用容器详解与实战技巧
STL(Standard Template Library)是 C++ 标准库中功能最强大的部分之一,提供了丰富的数据结构和算法。对于初学者而言,理解不同容器的底层机制和适用场景,比单纯记忆 API 更重要。下面结合实战经验,梳理常用容器的核心特性。
vector:变长数组与内存管理
vector 是最常用的动态数组。系统为程序分配空间时,所需时间主要与申请次数有关,而非空间大小。因此,频繁申请小块内存(如循环 push_back 单个元素)效率远低于一次性分配或倍增扩容。
倍增思想:当 vector 空间不足时,通常会将容量翻倍重新分配。这样虽然偶尔会有内存拷贝开销,但均摊下来每次插入的时间复杂度接近 O(1)。
#include <vector>
#include <iostream>
using namespace std;
int main() {
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>
pair<int, int> p(, );
pair<, pair<, >> (, {, });


