C++ STL 常用容器核心用法与性能解析
在 C++ 开发中,STL(Standard Template Library)提供了丰富且高效的数据结构。选择合适的容器不仅能简化代码逻辑,还能显著提升运行效率。本文将深入讲解常用容器的特性、底层机制及最佳实践。
Vector:动态数组的倍增策略
vector 是最常用的序列容器,底层为连续内存空间。它支持随机访问,但在尾部插入时可能触发扩容。
扩容机制
系统分配内存的时间主要取决于申请次数而非总大小。频繁的小规模申请开销巨大。因此,vector 采用倍增思想:当空间不足时,通常将容量扩大为原来的 2 倍并重新分配。这保证了均摊时间复杂度为 O(1)。
#include <vector>
#include <iostream>
int main() {
std::vector<int> v;
// 预分配空间可避免多次扩容
v.reserve(1000);
for (int i = 0; i < 1000; ++i) {
v.push_back(i);
}
return 0;
}
常用操作
size(): 获取元素个数。empty(): 判断是否为空。clear(): 清空容器。push_back()/pop_back(): 尾部增删。[]/at(): 访问元素。begin()/end(): 迭代器遍历。
Vector 支持字典序比较运算,可直接用于排序或集合操作。
Pair:二元组存储
pair 类似于包含两个成员的结构体,常用于需要同时处理两个相关数据的场景,例如坐标点或键值对。
#include <utility>
#include <algorithm>
std::pair<int, int> ;
first = p.first;
second = p.second;


