1. STL与string容器概述
STL(Standard Template Library)作为C++标准库的核心组件,其设计哲学深深植根于泛型编程思想。我第一次接触STL时就被它的优雅设计所震撼——通过模板技术实现了算法与数据结构的完美解耦。在STL的六大组件中,容器和迭代器是最基础也最常用的部分,而string作为序列式容器的典型代表,在日常开发中使用频率极高。
string本质上是对传统C风格字符串的封装和增强,它解决了裸指针操作字符串时的诸多痛点:
- 自动内存管理
- 丰富的成员函数
- 安全的边界检查
- 与其他STL容器的无缝协作
cpp复制// string实际上是basic_string<char>的别名
typedef basic_string<char> string;
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. string的核心操作解析
2.1 构造函数与初始化
string提供了多达7种构造函数,但实际开发中最常用的有3种:
cpp复制// 默认构造
string s1;
// C风格字符串构造
string s2("Hello");
// 拷贝构造
string s3(s2);
特别需要注意的是带位置参数的构造方式:
cpp复制string s4("ABCDEF", 2, 3); // 从位置2开始取3个字符 -> "CDE"
经验之谈:构造时如果传入空指针会导致未定义行为,建议先检查指针有效性
2.2 容量管理
string采用动态数组存储数据,其容量管理策略直接影响性能:
| 方法 | 作用描述 | 时间复杂度 |
|---|---|---|
| size() | 返回当前字符数 | O(1) |
| capacity() | 返回当前分配的内存容量 | O(1) |
| resize(n) | 调整字符数为n | O(n) |
| reserve(n) | 预分配至少n个字符的内存 |
