c++:标准模板库 STL(Standard Template Library)

目录

一、什么是 STL?

二、STL 三大核心组成

三、容器(Containers)

1. 顺序容器(Sequential Containers)

2. 关联容器(Associative Containers)— 基于红黑树

3. 无序容器(Unordered Containers)— 基于哈希表

⚙️ 四、算法(Algorithms)

五、迭代器(Iterators)

️ 六、STL 配合泛型编程的威力

七、STL 使用图解结构


一、什么是 STL?

定义:

STL(Standard Template Library) 是 C++ 标准库的一部分,它是一套使用模板技术实现的通用 数据结构和算法库。

可以理解为:

“一个高度模块化、高性能、高度泛型的编程工具箱。”

它实现了大量经典数据结构(如:数组、链表、栈、队列、哈希表、平衡树等)和常用算法(如:排序、查找、复制、替换等)。

 

二、STL 三大核心组成

STL 是由三大部分构成的:

组件 作用 举例
容器(Containers) 用来存放数据 vector, list, map
算法(Algorithms) 操作容器里的数据 sort, find, count
迭代器(Iterators) 用来遍历容器 it = v.begin(); ++it

这三者可以组合使用,例如对 vector 排序就用:std::sort(v.begin(), v.end());

 


三、容器(Containers)

容器是用来装数据的,就像一个个不同的容器:桶、箱子、抽屉……

STL 容器分为几类:

1. 顺序容器(Sequential Containers)

容器 特点 适用场景
vector 动态数组 最常用,支持随机访问
list 双向链表 插入/删除快,但不能随机访问
deque 双端队列 两端插入删除都快
array 固定长度数组(C++11) 更安全的静态数组

2. 关联容器(Associative Containers)— 基于红黑树

容器 特点
set 只存 key,自动排序
map 键值对,自动排序
multiset / multimap 允许重复 key

3. 无序容器(Unordered Containers)— 基于哈希表

容器 特点
unordered_set 哈希集合,查找快,不排序
unordered_map 哈希表,键值对查找快
unordered_multimap 哈希多键

 


⚙️ 四、算法(Algorithms)

STL 提供了 70 多个算法,可以对容器中的数据进行操作:

常用算法分类:

类型 代表函数 说明
排序类 sort, stable_sort 快速排序
查找类 find, binary_search 顺序查找 / 二分查找
修改类 reverse, replace, fill 数据修改
统计类 count, accumulate 个数、和等
变换类 transform, copy, remove_if 创建新数据

示例:

std::vector v = {1, 5, 2, 4};
std::sort(v.begin(), v.end());  // 排序
std::reverse(v.begin(), v.end());  // 逆序
int sum = std::accumulate(v.begin(), v.end(), 0); // 求和

 


五、迭代器(Iterators)

迭代器就像指针,用来访问容器的元素。

常见类型:

类型 用法
begin() / end() 遍历容器开头到结尾
rbegin() / rend() 反向遍历
const_iterator 只读迭代器
auto 自动类型推导(推荐)
std::vector v = {1, 2, 3};
for (std::vector::iterator it = v.begin(); it != v.end(); ++it) {
    std::cout << *it << " ";
}

 或者使用现代写法:

for (auto x : v) {
    std::cout << x << " ";
}

️ 六、STL 配合泛型编程的威力

STL 之所以强大,是因为它用的是 模板(template)技术,容器和算法都可以作用于任何类型的数据。

比如:

std::vector names;
std::map> data;

七、STL 使用图解结构

           +-----------------------+
           |     STL 总结构        |
           +-----------------------+
                /        |       \
               /         |        \
      容器 (vector/map)  算法 (sort/find)   迭代器 (*it)

容器储存数据 ➜ 算法操作数据 ➜ 迭代器在二者之间做“桥梁”

你可能感兴趣的:(C/C++,c++,开发语言)