C++ 标准库:全面概述
C++ 标准库(通常称为 STL — Standard Template Library)是一套强大的模板类和函数集合,包含在任何 C++ 编译器中。它提供了针对最常见编程任务的现成、经过验证且优化的解决方案:从处理动态数组和字符串到复杂的排序和搜索算法。使用标准库可以显著加快开发速度,提高代码可靠性,并简化代码维护。
在本文中,我们将详细分析 C++ 标准库的主要组件:容器、算法、迭代器、字符串、输入/输出流和智能指针。每个部分都将附有实际的代码示例。
容器 (Containers)
容器是用于存储和组织数据集合的类。它们分为三个主要类别:
- 序列容器:以线性顺序存储元素。主要代表:
std::vector(动态数组)、std::list(双向链表)、std::deque(双端队列)。 - 关联容器:以排序方式存储元素,提供快速查找。示例:
std::set(集合)、std::map("键-值"字典)。 - 无序关联容器(C++11):使用哈希表实现更快的访问。示例:
std::unordered_set、std::unordered_map。
使用 std::vector 和 std::map 的示例:
#include <iostream>#include <vector>#include <map>#include <string>
int main() { // 序列容器 std::vector<int> numbers = {10, 20, 30, 40}; numbers.push_back(50); // 在末尾添加
std::cout << "向量: "; for (int n : numbers) { std::cout << n << " "; } std::cout << std::endl;
// 关联容器 std::map<std::string, int> ages; ages["Alice"] = 30; ages["Bob"] = 25;
std::cout << "Alice的年龄: " << ages["Alice"] << std::endl; return 0;}迭代器 (Iterators)
迭代器是一种访问容器元素的通用方式。它们像"智能指针"一样工作,允许以统一的方式遍历任何容器。迭代器的主要类型:begin()(指向第一个元素的指针)和 end()(指向最后一个元素之后元素的指针)。
使用迭代器遍历 std::list 的示例:
#include <iostream>#include <list>
int main() { std::list<double> prices = {19.99, 29.99, 9.99};
// 使用迭代器 for (auto it = prices.begin(); it != prices.end(); ++it) { std::cout << *it << " "; } std::cout << std::endl; return 0;}算法 (Algorithms)
<algorithm> 库包含数十个用于处理数据序列的现成函数:排序、搜索、复制、转换等等。算法与迭代器一起工作,使其具有通用性。
常用算法:
std::sort— 对范围进行排序。std::find— 查找值的第一个出现位置。std::copy— 复制元素。std::accumulate— 对元素求和(来自<numeric>)。
排序和搜索的示例:
#include <iostream>#include <vector>#include <algorithm>
int main() { std::vector<int> data = {5, 2, 8, 1, 9