STL-unordered_set和unordered_map的基本使用

🔒快速导航关联在一起的文章🔒

文章名称 链接
二叉搜索树 点击直达文章
set和map的基本使用 点击直达文章
AVL树 点击直达文章
红黑树 点击直达文章

💡C++标准库超链接💡

unordered_set

在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同。

unordered_set的介绍:

  • unordered_set不是按特定顺序存储键值的容器,其允许通过键值快速的索引到与其对应的元素。
  • unordered_set在内部,中的元素不是按任何特定顺序排序的,为了实现在常数范围内找到key,unorder_set把相同的哈希值放在哈希桶中。
  • unordered_set元素的值同时也是唯一表示它们的key.
  • unordered_set 容器比 set 容器更快地通过它们的键访问单个元素,尽管它们通常对于通过其元素的子集进行范围迭代的效率较低。
  • 容器中的迭代器至少是前向迭代器。

unordered_set的使用

unordered_set的定义方式

常用的2种方式,库里还有几种,感兴趣的可以看看,链接在上面。

方式一:构造某种类型的空容器

unordered_set<int> uns1;//构造1个空的int容器

方式二:拷贝构造同类型的容器

unordered_set<int> uns2(uns1);//拷贝构造同类型的容器

unordered_set的常用接口

它的接口的使用跟set的接口使用是一样的。常用的接口如下:

成员函数 功能
insert 插入元素
erase 删除元素
find 查找指定元素
size 获取容器中元素的个数
empty 判断容器是否为空
clear 清除数据
swap 交换2个容器的数据
count 获取容器中的有效元素的个数

unordered_set的迭代器

begin 返回第一个元素的迭代器
end 返回最后一个元素下一个位置的迭代器
cbegin 返回第一个元素的const迭代器
cend 返回最后一个元素下一个位置的const迭代器

示例如下:

void Test_unordered_set1()
{
   
	unordered_set<int> uns1;//构造1个空的int容器
	//插入
	uns1.insert(2);
	uns1.insert(10);
	uns1.insert(4);
	uns1.insert(13);
	uns1.insert(2);
	uns1.insert(12);
	//迭代器遍历
	unordered_set<int>::iterator it = uns1.begin();
	while (it != uns1.end())
	{
   
		cout << *it << " ";
  • 29
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_End丶断弦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值