C++ STL 常用容器详解与实战技巧
在 C++ 开发中,STL(Standard Template Library)是提升代码效率的关键工具。它提供了丰富的数据结构,如变长数组、哈希表、队列等。掌握这些容器的特性与底层原理,能帮助你写出更健壮、高性能的代码。
Vector:动态数组与倍增策略
Vector 是最常用的序列容器,支持随机访问。其核心优势在于内存管理的自动化。
空间分配机制
系统为程序分配内存时,申请次数对性能影响远大于单次大小。频繁的小块内存申请会导致严重的性能损耗。因此,Vector 采用倍增策略:当容量不足时,通常会将当前容量翻倍重新分配。这大大减少了扩容次数,摊还后的插入操作时间复杂度接近 O(1)。
比较运算
Vector 支持字典序比较,可以直接用于排序或判断大小关系。
#include <vector>
#include <algorithm>
std::vector<int> v = {3, 1, 2};
// 排序
std::sort(v.begin(), v.end());
Pair:二元组结构
Pair 可以看作是一个包含两个变量的结构体,常用于存储关联数据。
- 定义:
std::pair<T1, T2> - 成员:
first和second - 排序规则:默认按字典序,先比较
first,若相同则比较second。
对于多属性排序需求,可以使用嵌套 Pair,例如 std::pair<int, std::pair<int, int>>。
#include <utility>
std::pair<int, int> p = {10, 20};
if (p.first > 5) {
// 处理逻辑
}
String:字符串封装
C++ 的 String 类对字符数组进行了完善封装,提供了丰富的操作方法,如长度获取、子串提取、字符转换等。
#include <string>
std::string s = "Hello";
std::string sub = s.(, );
* c_str = s.();


