首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在STL中使用unordered_set?

在C++中,unordered_set是一个关联容器,它使用哈希表来存储数据。unordered_set的主要特点是它提供了快速的查找、插入和删除操作。要在STL中使用unordered_set,请按照以下步骤操作:

  1. 包含所需的头文件:
代码语言:cpp
复制
#include<iostream>
#include <unordered_set>
  1. 声明一个unordered_set变量:
代码语言:cpp
复制
std::unordered_set<int> my_set;
  1. unordered_set中添加元素:
代码语言:cpp
复制
my_set.insert(10);
my_set.insert(20);
my_set.insert(30);
  1. 查找元素:
代码语言:cpp
复制
if (my_set.find(20) != my_set.end()) {
    std::cout << "Element 20 found in the set."<< std::endl;
} else {
    std::cout << "Element 20 not found in the set."<< std::endl;
}
  1. 删除元素:
代码语言:cpp
复制
my_set.erase(10);
  1. 遍历unordered_set中的元素:
代码语言:cpp
复制
for (auto it = my_set.begin(); it != my_set.end(); ++it) {
    std::cout << "Element: " << *it<< std::endl;
}

以下是一个完整的示例:

代码语言:cpp
复制
#include<iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> my_set;

    my_set.insert(10);
    my_set.insert(20);
    my_set.insert(30);

    if (my_set.find(20) != my_set.end()) {
        std::cout << "Element 20 found in the set."<< std::endl;
    } else {
        std::cout << "Element 20 not found in the set."<< std::endl;
    }

    my_set.erase(10);

    for (auto it = my_set.begin(); it != my_set.end(); ++it) {
        std::cout << "Element: " << *it<< std::endl;
    }

    return 0;
}

这个示例展示了如何在STL中使用unordered_set来存储和操作整数。你可以根据需要替换整数类型为其他数据类型。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • c++11&14-STL专题

    在c++里面不得不提的一个标准库,就是STLSTL包含很多实用的数据结构,vector,list,map,set等都是我们常用的,而c++11也对STL做了一些补充,使得STL的内容越来越丰富,可选择的也越来越多了...我们在学习数据结构的时候都知道,链表在对数据进行插入和删除是比顺序存储的线性表有优势,因此在插入和删除操作频繁的应用场景使用list和forward_list比使用array、vector和deque...在内部实现上有很大不同,std::map使用的数据结构为红黑树,且是有序的,而std::unordered_map内部是哈希表的实现方式,无序。...4. std::unordered_set 先看一段代码: #include #include #include #include...的数据存储结构也是哈希表的方式结构,除此之外,std::unordered_set在插入时不会自动排序,这是与set表现不同的地方,其他用法基本类似。

    29930

    STL库简述

    学习实例: STL 适配器adapter 2.关联型容器 主要包括 map,unordered_map,set,unordered_set 这些key-value存储结构的容器或者以集合形式存在的容器...学习实例: STL 容器(二) set,unordered_set STL 容器(三) map和unordered_map ---- 算法库 算法库整体包括 algorithm库。...学习实例: STL 适配器adapter ---- 配置器(allocator) 配置器的功能在于定义类内存的分配,正常情况下程序员是不会自定义内存的分类的。...学习实例: STL 配置器allocator 实现vector类 ---- 仿函数(函数对象) 实质上也就是将一个类的使用近似看成函数的使用,也就是在类内部使用 operator() 。...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    47540

    C++【哈希表的完善及封装】

    隐式类型转换,这样写的话更加规范,让别人一眼就能看出这里发生了 隐式类型转换 1.3、优化:素数大小 使用除留余数法时,哈希表的大小最好是素数,这样能够减少哈希冲突产生的次数 SGI 版 STL ,...,构造一个指针指向哈希表 如何在 哈希表 中进行移动?...---- 2、封装实现 unordered_set 和 unordered_map 如同使用 一棵红黑树同时封装 set/map 同样可以使用 一张哈希表同时封装 unordered_set/unordered_map...这是因为 unordered_set 普通对象版的 begin() 或 end() 使用的是 哈希表 const 迭代器,但哈希表的迭代器相关函数返回的是 普通迭代器 啊,也就是说,存在一个 普通迭代器...unordered_set 和 unordered_map 就算是完成了 ---- 3、性能测试 将自己封装的 unordered_set 与库unordered_set 进行性能对比(Release

    31160

    【DB笔试面试511】如何在Oracle写操作系统文件,写日志?

    题目部分 如何在Oracle写操作系统文件,写日志? 答案部分 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。...若想普通用户使用该包,则需要在SYS用户下执行“GRANT EXECUTE ON DBMS_LOCK TO USER_XXX;”命令。 Oracle使用哪个包可以生成并传递数据库告警信息?...在CLIENT_INFO列存放程序的客户端信息;MODULE列存放主程序名,包的名称;ACTION列存放程序包的过程名。该包不仅提供了设置这些列值的过程,还提供了返回这些列值的过程。...如何在存储过程暂停指定时间? DBMS_LOCK包的SLEEP过程。例如:“DBMS_LOCK.SLEEP(5);”表示暂停5秒。 DBMS_OUTPUT提示缓冲区不够,怎么增加?...如何在Oracle写操作系统文件,写日志? 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。

    28.8K30

    哈希表你真的学透了嘛

    哈希图片在C++98STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 log2_N ,即最差情况下需要比较红黑树的高度次,当树的节点非常多时,查询效率也不理想。...最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同,本文中只对...unordered_set底层是哈希,而set底层是红黑树,unordered_set使用方法和set没有太大差异,这里不展开介绍。...(这次的随机数量有60多w),unordered_set的find速度比set快 图片在100w个有序数集合(没有重复值),unordered_set的find相比于set还是要快。...JAVA库载荷因子就为0.75,超过此值就resize散列表。

    78130

    【C++】开散列实现unordered_map与unordered_set的封装

    本文主要介绍unordered_map与unordered_set的封装,此次封装主要用上文所说到的开散列,通过开散列的一些改造来实现unordered_map与unordered_set的封装 一、...模板参数 由于unordered_set 是 K 模型的容器,而 unordered_map 是 KV 模型的容器,所以需要对结点的参数进行改造,unordered_set可以使用,unordered_map...也可以使用,改为T _data即可 template struct HashNode { T _data; HashNode* _next; HashNode(...,并没有反向迭代器,所以没有实现–-运算符的重载,若是想让哈希表支持双向遍历,可以考虑将哈希桶存储的单链表结构换为双链表结构。...,哈希表的 const 迭代器不能复用普通迭代器的代码,我们查看源码: 这与我们之前所复用的不同,上面stl源码可以看到并没有用以前的复用: 这是因为如果使用const版本,那么_tables使用[

    17920

    C++系列笔记(十)

    STL集合类   容器 set和 multiset让程序员能够在容器快速查找键,键是存储在一维容器的值。set和multiset之间的区别在于,后者可存储重复的值,而前者只能存储唯一的值。...要使用std::set或set::multiset类,需要包含头文件:位于set特定位置的元素不能替换为值不同的新元素,这是因为set将把新元素同二叉树的其他元素进行比较,进而将其放在其他位置。...或multiset删除:setObeject.erase(iLowerBound,iUpperBound); C++11 STL散列集合实现std::unordered_set和std::unordered_multiset...STL提供的容器类std::unordered_set就是基于散列的set。...要使用STL容器std::unordered_set或std::unordered_multiset,需要包含头文件:#include相比于std

    49920

    C++STL——哈希

    unordered系列关联式容器 在C++98STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 log_2N ,即最差情况下需要比较红黑树的高度次,当树的节点非常多时,查询效率也不理想...最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是 其底层结构不同。...底层结构 unordered系列的关联式容器之所以效率比较高,是因为其底层使用了哈希结构。 哈希概念与哈希冲突 哈希映射:key值跟储存位置建立关联关系。...改成4321)、右环位移(1234改成4123)、左环移 位、前两数与后两数叠加(1234改成12+34=46)等方法。...使用同一组散列函数的布隆过滤器可以进行交、并、差运算。 缺陷 有误判率,即存在假阳性(False Position),即不能准确判断元素是否在集合

    511120
    领券