C++ 标准库:完整概述与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C++ 标准库:完整概述



C++ 标准库(C++ Standard Library)是一套强大的类、函数、宏和模板集合,随任何 C++ 编译器一起提供。它为大多数常见任务提供了现成的解决方案:从数据容器操作到网络通信和多线程。在本文中,我们将解析库的主要组件,展示代码示例,并解释如何有效利用其功能。



标准库的主要组件



标准库分为几个主要部分:



  • STL(标准模板库)——容器、迭代器、算法和函数对象。
  • 输入/输出——流(iostream)、文件流(fstream)、字符串流(sstream)。
  • 字符串——std::string 和 std::string_view 类。
  • 数值运算——数学函数(cmath)、随机数(random)、复数(complex)。
  • 多线程——线程(thread)、互斥锁、条件变量。
  • 实用工具——std::optional、std::variant、std::any、智能指针(shared_ptr、unique_ptr)。


STL 容器



容器是用于存储对象集合的模板类。它们分为序列式容器和关联式容器。



序列式容器



  • std::vector——动态数组。按索引快速访问,中间插入较慢。
  • std::deque——双端队列。两端快速插入/删除。
  • std::list——双向链表。任意位置快速插入/删除,但按索引访问较慢。


#include <iostream>#include <vector>

int main() { std::vector<int> numbers = {10, 20, 30, 40}; numbers.push_back(50); // 在末尾添加 for (int n : numbers) { std::cout << n << " "; } return 0;}


关联式容器



  • std::set——唯一元素集合(已排序)。
  • std::map——键值对字典(按键排序)。
  • std::unordered_set / std::unordered_map——哈希表(未排序,但更快)。


#include <iostream>#include <map>

int main() { std::map<std::string, int> ages; ages["Alice"] = 30; ages["Bob"] = 25; for (const auto& [name, age] : ages) { std::cout << name << ": " << age << std::endl; } return 0;}


算法



<algorithm> 库包含 100 多种用于序列操作的算法:排序、查找、复制、变换等。所有算法都通过迭代器工作,使其具有通用性。



#include <iostream>#include <algorithm>#include <vector>

int main() { std::vector<int> v = {5, 2, 8, 1, 9}; std::sort(v.begin(), v.end()); // 升序排序 auto it = std::find(v.begin(), v.end(), 8); if (it != v.end()) { std::cout << "找到: " << *it << std::endl; } return 0;}


字符串操作



std::string 类提供了便捷的文本操作方法:查找、替换、拼接、比较。C++17 中添加了 std::string_view 用于非拥有式字符串视图。



#include                    

推荐