C++ set和map有什么区别_C++ STL中关联容器set与map的使用场景

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

c++ set和map有什么区别_c++ stl中关联容器set与map的使用场景

在C++ STL中,setmap都属于关联容器,底层通常由红黑树实现,支持有序存储和快速查找。它们的核心区别在于存储的数据类型和使用目的。

存储内容不同

set用于存储唯一的键(key),不包含值。每个元素本身就是键,且自动去重、自动排序。

map存储的是键值对(key-value pair),通过唯一的键来映射对应的值。同样保证键的唯一性和有序性。

– set: 只关心“有哪些元素”,例如记录已访问的ID。- map: 关心“某个键对应什么值”,例如统计单词出现次数。

插入方式与数据结构

set 插入的是单个值:

立即学习“C++免费学习笔记(深入)”;

set nums;
nums.insert(10);

map 插入的是键值对:

mapwordCount;
wordCount[“hello”] = 1;

map 的每个元素是 pair 类型,可以通过 first 访问键,second 访问值。

典型使用场景对比

当你只需要维护一个不重复、有序的元素集合时,用 set 更合适:

– 去重:如读取一组数字并输出唯一值。- 查找存在性:判断某个用户ID是否已注册。- 遍历时希望按顺序访问元素。

当你需要将一个键与另一个数据关联起来时,选择 map

– 统计频次:词频统计、字符出现次数。- 缓存映射:用户名到用户信息的查找。- 配置管理:配置项名称到设置值的映射。

基本上就这些。set 是“键即数据”的容器,map 是“键映射值”的工具。根据你要解决的问题选择即可。不复杂但容易忽略的是:如果只是判断存在性,别滥用 map 浪费内存。反之,需要附加信息时,set 就不够用了。

以上就是C++ set和map有什么区别_C++ STL中关联容器set与map的使用场景的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1485299.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 08:48:33
下一篇 2025年12月8日 00:20:19

相关推荐

发表回复

登录后才能评论
关注微信