set存储唯一键,用于去重和存在性判断;2. map存储键值对,用于映射关系如统计频次;3. set适合有序集合操作,map适合关联数据查找;4. 根据是否需要值选择容器,避免内存浪费。

在C++ STL中,set和map都属于关联容器,底层通常由红黑树实现,支持有序存储和快速查找。它们的核心区别在于存储的数据类型和使用目的。
set用于存储唯一的键(key),不包含值。每个元素本身就是键,且自动去重、自动排序。
map存储的是键值对(key-value pair),通过唯一的键来映射对应的值。同样保证键的唯一性和有序性。
- set: 只关心“有哪些元素”,例如记录已访问的ID。 - map: 关心“某个键对应什么值”,例如统计单词出现次数。set 插入的是单个值:
立即学习“C++免费学习笔记(深入)”;
set<int> nums;map 插入的是键值对:
map<string, int> wordCount;map 的每个元素是 pair 类型,可以通过 first 访问键,second 访问值。
当你只需要维护一个不重复、有序的元素集合时,用 set 更合适:
- 去重:如读取一组数字并输出唯一值。 - 查找存在性:判断某个用户ID是否已注册。 - 遍历时希望按顺序访问元素。当你需要将一个键与另一个数据关联起来时,选择 map:
- 统计频次:词频统计、字符出现次数。 - 缓存映射:用户名到用户信息的查找。 - 配置管理:配置项名称到设置值的映射。基本上就这些。set 是“键即数据”的容器,map 是“键映射值”的工具。根据你要解决的问题选择即可。不复杂但容易忽略的是:如果只是判断存在性,别滥用 map 浪费内存。反之,需要附加信息时,set 就不够用了。
以上就是C++ set和map有什么区别_C++ STL中关联容器set与map的使用场景的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号