首页
学习
活动
专区
工具
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++篇】无序中的法则:探索 STL之unordered_map 与 unordered_set容器的哈希美学

前言 C++ 标准模板库(STL)中的 unordered_map 和 unordered_set 是哈希表实现的关联容器。...并通过详细的代码示例,帮助您掌握如何在实际开发中利用这些容器优化性能和内存管理。...unordered_set 使用哈希表实现,以提供近乎常数时间的查找效率。...3.1.2 使用 emplace() 插入元素 emplace() 方法直接在 unordered_map 或 unordered_set 中构造元素,避免了复制操作。...以上就是关于【C++篇】无序中的法则:探索 STL之unordered_map 与 unordered_set容器的哈希美学的内容啦,各位大佬有什么问题欢迎在评论区指正,或者私信我也是可以的啦,您的支持是我创作的最大动力

27210
  • c++11&14-STL专题

    在c++里面不得不提的一个标准库,就是STL,STL包含很多实用的数据结构,如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 unordered_set> #include...的数据存储结构也是哈希表的方式结构,除此之外,std::unordered_set在插入时不会自动排序,这是与set表现不同的地方,其他用法基本类似。

    30630

    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

    33960

    【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

    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() 。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    48940

    用哈希表封装myunordered_map_set--C++

    一、源码及框架分析 SGI-STL30版本源代码中没有unordered_map和unordered_set,SGI-STL30版本是C++11之前的STL版本,这两个容器是C++11之后才更新的。.../stl_hash_set/stl_hashtable.h中 hash_map和hash_set的实现结构框架核心部分截取出来如下: // stl_hash_set template unordered_set 1、实现出复用哈希表的框架,并支持insert 参考源码框架,unordered_map和unordered_set复用之前我们实现的哈希表...我们这里相比源码调整一下,key参数就用K,value参数就用V,哈希表中的数据类型,我们使用T。...层分别实现一个MapKeyOfT和SetKeyOfT的仿函数传给HashTable的KeyOfT,然后HashTable中通过KeyOfT仿函数取出T类型对象中的K对象,再转换成整形取模和K比较相等,具体细节参考如下代码实现

    3500

    哈希表你真的学透了嘛

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

    80330

    【C++】用哈希表封装myunordered_map和myunordered_set

    1.源码及框架分析 SGI-STL30版本源代码中没有unordered_map和unordered_set,SGI-STL30版本是C++11之前的STL版本,这两个容器是C++11之后才更新的。.../stl_hash_set/stl_hashtable.h中hash_map和hash_set的实现结构框架核⼼部分截取出来如下: // stl_hash_set template unordered_set 2.1实现出复⽤哈希表的框架,并⽀持insert 参考源码框架,unordered_map和unordered_set复⽤之前我们实现的哈希表...层分别实现⼀个MapKeyOfT和SetKeyOfT的仿函数传给 HashTable的KeyOfT,然后HashTable中通过KeyOfT仿函数取出T类型对象中的K对象,再转换成 整形取模和...unordered_set的iterator也不⽀持修改,我们把unordered_set的第⼆个模板参数改成const K即 可, HashTable<K, const K , SetKeyOfT

    7510

    【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使用[

    19120

    C++:哈希表

    unordered_set和unordered_map 在 C++ 中,unordered_set 和 unordered_map 是两种基于哈希表(Hash Table)的容器,它们是 C++11 标准模板库的一部分...unordered_set 提供了平均常数时间复杂度为 O(1) 的插入、删除和查找操作。unordered_set 维护元素的唯一性,如果尝试插入一个已存在的元素,它不会被添加到集合中。...set 底层是红黑树,中序遍历是有序的,迭代器遍历是有序的,而 unordered_set 底层是哈希表,迭代器遍历是无序的。...开发定址法(闭散列) 该方法将所有元素放到哈希表中,当出现哈希冲突时,按照某种方法(线性探测、二次探测和双重探测)寻找下一个没有存储数据的位置进行存储,开放定址法中负载因子一定小于 1 。...链地址法中哈希表中存储一个指针,没有数据映射这个位置时,这个指针为空,有多个数据映射到这个位置时,把冲突的数据链接成一个链表,挂在哈希表下面,这种方法又叫哈希桶。

    10510
    领券