值得一看
广告
彩虹云商城
广告

热门广告位

c++怎么使用set和unordered_set_c++ set与unordered_set容器使用方法

set基于红黑树实现,元素有序,操作复杂度O(log n);unordered_set基于哈希表,元素无序,平均操作复杂度O(1),适用于存在性查询。

c++怎么使用set和unordered_set_c++ set与unordered_set容器使用方法

在C++中,setunordered_set 是两种常用的关联式容器,用于存储唯一的元素。它们都定义在 <set><unordered_set> 头文件中,但底层实现和性能特性不同,适用于不同的场景。

set 的使用方法

set 基于红黑树实现,元素自动排序(默认升序),插入、删除、查找的时间复杂度为 O(log n)。适合需要有序遍历或范围查询的场景。

基本操作示例:

  • 包含头文件:#include <set>
  • 创建 set 并插入元素:


set<int> s;
s.insert(10);
s.insert(5);
s.insert(15);
s.insert(5); // 重复元素不会被插入

此时 set 中元素为 {5, 10, 15},已自动排序。

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

  • 遍历输出:


for (const auto& x : s) {
   cout << x << ” “;
}
// 输出:5 10 15

  • 查找元素:


if (s.find(10) != s.end()) {
   cout << “Found 10”;
}

  • 删除元素:

  • s.erase(10); // 删除值为10的元素

    • 自定义排序(例如降序):


    set<int, greater<int>> s_desc;
    s_desc.insert(5);
    s_desc.insert(10);
    // 元素顺序:10, 5

    unordered_set 的使用方法

    unordered_set 基于哈希表实现,元素无序,插入、删除、查找平均时间复杂度为 O(1),最坏情况 O(n)。适合只关心存在性而不关心顺序的场景。

    AI图像编辑器

    AI图像编辑器

    使用文本提示编辑、变换和增强照片

    AI图像编辑器46

    查看详情
    AI图像编辑器

    基本操作示例:

    • 包含头文件:#include <unordered_set>
    • 创建 unordered_set 并插入:


    unordered_set<int> us;
    us.insert(10);
    us.insert(5);
    us.insert(15);

    元素顺序不确定,可能是任意排列。

    • 查找元素:


    if (us.find(5) != us.end()) {
       cout << “5 exists”;
    }

    • 删除元素:


    us.erase(10);

    • 遍历输出(顺序不固定):


    for (const auto& x : us) {
       cout << x << ” “;
    }

    • 可以指定桶数或自定义哈希函数(高级用法):


    // 自定义哈希结构(例如对 pair)
    struct HashPair {
       size_t operator()(const pair<int, int>& p) const {
          return hash<int>{}(p.first) ^ hash<int>{}(p.second);
       }
    };

    unordered_set<pair<int, int>, HashPair> custom_us;

    set 与 unordered_set 的选择建议

    根据实际需求选择:

    • 需要元素有序或进行范围操作(如找前驱后继)→ 使用 set
    • 只关心元素是否存在、插入/查找效率优先 → 使用 unordered_set
    • 数据量大且哈希分布均匀时,unordered_set 更快
    • 注意:unordered_set 可能因哈希冲突导致性能下降,set 性能更稳定

    基本上就这些,掌握 insert、find、erase 和遍历就能应对大多数情况。

相关标签:

ai c++ 排列 red if for include const auto int Struct operator

大家都在看:

比特币Hyper项目诈骗疑云加剧,投资者转向DeepSnitch AI寻求300倍回报
Arm 首席执行官:将部分工作负载从云端转移将有助降低 AI 电力需求
华硕ProArt 创16 2025 AI专业创作本:为创作者打造的“移动堡垒”
市场监管总局公布十起互联网违法广告典型案例,两起涉及 AI
2025元宇宙大会现场:高通孟樸详解AI+XR如何破解元宇宙发展新机遇
温馨提示: 本文最后更新于2025-10-16 22:27:43,某些文章具有时效性,若有错误或已失效,请在下方留言或联系在线客服
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容