C++ STL 系列(八):STL 工程实践总结 —— 常见容器组合与使用场景
·
经过前面的几篇文章,我们已经系统学习了 STL 的核心内容:
- STL 基本概念
- vector
- map / unordered_map
- iterator
- algorithm
- STL 容器体系
- 泛型编程思想
这一篇我们从 工程实践的角度,总结 STL 在实际开发中的常见用法。
一、STL 的整体结构回顾
STL 的核心结构可以总结为三部分:
STL
│
├─ Containers(容器)
├─ Iterators(迭代器)
└─ Algorithms(算法)
三者关系:
容器 → 存储数据
迭代器 → 访问数据
算法 → 操作数据
例如:
vector<int> nums = {3,1,2};
sort(nums.begin(), nums.end());
这里:
vector = 容器
begin/end = 迭代器
sort = 算法
二、最常用的 STL 容器
在实际开发中,STL 容器非常多,但最常用的主要是以下几个:
| 容器 | 用途 |
|---|---|
| vector | 动态数组 |
| unordered_map | 哈希字典 |
| map | 有序字典 |
| set | 集合 |
其中使用频率最高的是:
vector
unordered_map
map
三、常见容器组合
在实际项目中,经常会组合使用 STL 容器。
1 vector + sort
用于 数据排序。
示例:
vector<int> nums = {5,3,1,4};
sort(nums.begin(), nums.end());
应用场景:
排行榜
数据排序
统计结果
2 unordered_map + vector
用于 统计和存储数据。
示例:
vector<string> words = {"apple","banana","apple"};
unordered_map<string,int> count;
for(auto &w : words)
{
count[w]++;
}
应用场景:
词频统计
日志统计
数据统计
3 map + set
用于 有序数据管理。
示例:
set<int> s;
s.insert(3);
s.insert(1);
s.insert(2);
输出:
1 2 3
应用场景:
去重
自动排序
集合管理
四、STL 使用原则
在实际开发中,可以遵循几个简单原则:
需要列表 → vector
需要字典 → unordered_map
需要排序 → map / set
大多数问题都可以用这三个容器解决。
五、STL 的优势
使用 STL 的好处:
代码复用
开发效率高
性能稳定
安全性更好
STL 中的数据结构已经经过大量优化,不需要自己重新实现。
六、STL 学习总结
STL 的核心可以用一句话概括:
STL = 容器 + 迭代器 + 算法
通过泛型编程,STL 可以适用于多种数据类型。
例如:
vector<int>
vector<string>
map<string,int>
都可以使用同一套模板实现。
七、STL 学习路线总结
学习 STL 的推荐顺序:
1 STL 基本概念
2 vector
3 map / unordered_map
4 iterator
5 algorithm
6 容器体系
7 泛型编程
8 工程实践
按照这个顺序学习,可以逐步建立完整的 STL 知识体系。
八、总结
STL 是 C++ 标准库中非常重要的一部分。
可以简单理解为:
STL 是 C++ 提供的一套通用数据结构和算法工具库。
通过 STL,我们可以:
直接使用成熟的数据结构
避免重复实现底层逻辑
提高开发效率
掌握 STL,是学习 C++ 的重要一步。
系列总结
本系列从基础到实践,完整介绍了 STL 的核心内容:
01 STL 基本概念
02 vector
03 map 与 unordered_map
04 iterator
05 algorithm
06 STL 容器体系
07 泛型编程
08 工程实践
理解这些内容后,基本可以在实际项目中熟练使用 STL。
更多推荐
所有评论(0)