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

在C++ STL中,set和map都属于关联容器,底层通常由红黑树实现,支持有序存储和快速查找。它们的核心区别在于存储的数据类型和使用目的。
存储内容不同
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
微信扫一扫
支付宝扫一扫