C++ 标准库:功能全面概述

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

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

开始课程

C++ 标准库 (STL):全面概述



C++ 标准库(常称为 STL——Standard Template Library)是一套强大的模板类和函数集合,是任何 C++ 编译器中不可或缺的组成部分。它为开发者提供了现成、经过验证且高效的解决方案,用于处理大多数日常任务:从数据集合操作到复杂算法以及输入输出。学习 STL 是掌握现代 C++ 的关键一步。



在本文中,我们将详细解析标准库的主要组件、它们的用途,并提供实际使用示例。



1. 容器 (Containers)



容器是用于存储对象集合的数据结构。所有容器都是模板类,因此可以存储任何类型的元素。



  • 序列式容器:以线性顺序存储元素。
    • std::vector — 动态数组。通过索引快速访问,在末尾插入/删除为 O(1),在中间为 O(n)。
    • std::list — 双向链表。在任何位置快速插入/删除,但无法直接通过索引访问。
    • std::deque — 双端队列。在开头和末尾均可快速插入/删除。
    • std::array — 固定大小的静态数组 (C++11)。
  • 关联式容器:以排序顺序存储元素(通常基于红黑树)。
    • std::set — 唯一元素的集合。
    • std::map — 键值对字典(关联数组)。
    • std::multiset / std::multimap — 允许重复键的类似容器。
  • 无序关联式容器 (C++11):使用哈希表。
    • std::unordered_set, std::unordered_map — 平均 O(1) 的快速访问。
  • 容器适配器:基于另一个容器提供受限接口。
    • std::stack (LIFO), std::queue (FIFO), std::priority_queue (优先级队列)。


std::vector 使用示例:

#include <iostream>#include <vector>

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


2. 迭代器 (Iterators)



迭代器是泛化的指针,允许以统一的方式遍历任何容器的元素。它们是连接容器和算法的桥梁。



  • 迭代器类别:输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器。
  • begin() / end() — 返回指向第一个元素和最后一个元素之后位置的迭代器。
  • std::advance() — 将迭代器移动 N 个位置。
  • std::distance() — 计算两个迭代器之间的距离。


迭代器示例:

#include <iostream>#include <vector>

int main() { std::vector<std::string> words = {"Hello", "World", "C++"}; for (auto it = words.begin(); it != words.end(); ++it) { std::cout << *it << " "; } // 输出:Hello World C++ return 0;}


3. 算法 (

推荐